如果要使用关联表中的其他数据创建多对多关系,则必须将关联表作为实体。纯多对多关系仅在具有实体ID的纯表中。
在您的情况下,它将是:
public class Media // One entity table{ public int Id { get; set; } public string Name { get; set; } public bool Enabled { get; set; } public virtual ICollection<ContractMedia> ContractMedias { get; set; }}public class Contract // Second entity table{ public int Id { get; set; } public string Code { get; set } public virtual ICollection<ContractMedia> ContractMedias { get; set; }}public class ContractMedia // Association table implemented as entity{ public int MediaId { get; set; } public int ContractId { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public double Price { get; set; } public virtual Media Media { get; set; } public virtual Contract Contract { get; set; }}创建模型/实体后,需要在上下文中定义关系:
protected override void onModelCreating(DbModelBuilder modelBuilder){ modelBuilder.Entity<ContractMedia>() .HasKey(c => new { c.MediaId, c.ContractId }); modelBuilder.Entity<Contract>() .HasMany(c => c.ContractMedias) .WithRequired() .HasForeignKey(c => c.ContractId); modelBuilder.Entity<Media>() .HasMany(c => c.ContractMedias) .WithRequired() .HasForeignKey(c => c.MediaId); }您还可以参考以下链接:
Fluent API
Entity framework Code中具有额外字段的多对多映射首先具有附加信息的多对多关系
首先在关联表中创建具有附加字段的多对多代码



