如何在实体框架中添加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
?
EF不支持。如果您需要带有额外列的连接表,则必须将该表映射到实体本身,并且您将失去直接的多对多导航。
您将有两个多对一和一对多关系,并且您需要在它们之间进行两次跳转,即从一个实体到连接表实体(这将是它的子实体),从连接表实体到关系另一端的相关实体集合。
见this SO Q&A:
Fluent API中带有额外字段的多对多映射