【问题标题】:How can I add additional field in N to N junction table in entity framework如何在实体框架的 N 到 N 联结表中添加附加字段
【发布时间】:2014-07-01 17:48:49
【问题描述】:

我有两个表 Group 和“用户”。用户可以加入许多组。所以我创建了这两个对象并将它们加入到流利的 api 中:

public class Group
    {...
public virtual ICollection<ApplicationUser> Members { get; set; }

和:

public class ApplicationUser
    {...
public virtual ICollection<Group> MemberInGroups { get; set; }

我将它们映射到流利的 api 中:

modelBuilder.Entity<Group>()
                        .HasMany(c => c.Members)
                        .WithMany(x => x.MemberInGroups)
                        .Map(a =>
                        {
                            a.ToTable("UsersInGroups");
                            a.MapLeftKey("GroupId");
                            a.MapRightKey("UserId");
                        });

如何在联结表中再添加一列,例如JoinDate?

【问题讨论】:

    标签: c# entity-framework entity-framework-6


    【解决方案1】:

    EF 不支持。如果您需要具有额外列的联结表,则该表必须映射到实体本身,并且您将失去直接的多对多导航。

    您将拥有两个多对一和一对多关系,并且您需要在两个跃点之间进行两次导航,即从一个实体到联结表实体(这将是它的child) 并从联结表实体到关系另一方的相关实体的集合。

    查看此 SO 问答:

    Many to many mapping with extra fields in Fluent API

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多