如何在实体框架中添加N到N连接表中的附加字段?

本文关键字:字段 连接 框架 实体 添加 | 更新日期: 2023-09-27 18:10:56

我有两个表Group和'User'。用户可以加入多个群组。所以我创建了这两个对象,并将它们连接在fluent api中:

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

:

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

我将它们映射到fluent api中:

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

如何在连接表中增加一列,如JoinDate ?

如何在实体框架中添加N到N连接表中的附加字段?

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

您将有两个多对一和一对多关系,并且您需要在它们之间进行两次跳转,即从一个实体到连接表实体(这将是它的子实体),从连接表实体到关系另一端的相关实体集合。

见this SO Q&A:

Fluent API中带有额外字段的多对多映射