varios una tabla solucion relacion muchos llenar intermedia erwin ejemplos como c# .net entity-framework ef-code-first entity-framework-4.1

c# - una - Código del marco de la entidad: primera relación de muchos a muchos con información adicional



relacion uno a varios ejemplos (2)

Tengo el siguiente modelo:

class Contract { string ContractID{get;set;} ICollection<Part> Parts{get;set;} } class Part { string PartID{get;set;} ICollection<Contract> Contracts{get;set;} }

el problema es que la relación entre Parte y Contrato también contiene la siguiente información adicional:

class ContractParts { Contract{get;set;} Part{get;set;} Date{get;set;} //additional info Price{get;set;} //additional info }

¿Cómo escribiría el contexto de la entidad para esto?


En tal caso, debe modelar sus entidades de esta manera:

public class Contract { public virtual string ContractId { get; set; } public virtual ICollection<ContractPart> ContractParts { get; set; } } public class Part { public virtual string PartId { get;set; } public virtual ICollection<ContractPart> ContractParts { get; set; } } public class ContractPart { public virtual string ContractId { get; set; } public virtual string PartId { get; set; } public virtual Contract Contract { get; set; } public virtual Part Part { get; set; } public virtual string Date { get; set; } //additional info public virtual decimal Price { get; set; } //additional info }

En contexto derivado debe definir:

protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<ContractPart>() .HasKey(cp => new { cp.ContractId, cp.PartId }); modelBuilder.Entity<Contract>() .HasMany(c => c.ContractParts) .WithRequired() .HasForeignKey(cp => cp.ContractId); modelBuilder.Entity<Part>() .HasMany(p => p.ContractParts) .WithRequired() .HasForeignKey(cp => cp.PartId); }