考虑名为List的实体可以容纳许多用户的情况。
public class List{
public int Id{get;set;}
public string Name{get;set;}
public virtual List<User>Users{get;set;
}
public class User{
public int Id{get;set;}
public string Name{get;set;}
public virtual List<List>List{get;set;
}
我的数据库中有一个名为ListUserAssociation的关联表,它包含多个记录。
表有2列ListId和UserId
如何在EF代码中指定此关联?
P.S。我不能放弃并重新创建表格。
答案 0 :(得分:0)
由于您在两侧都定义了集合,因此您可以从任意一侧定义关系:
modelBuilder.Entity<List>().HasMany(e => e.Users).WithMany(e => e.List).Map(ca => ca.MapLeftKey(new string[] {"ListId"}).MapRightKey(new string[] {"UserId"}).ToTable("ListUserAssociation");
modelBuilder.Entity<User>().HasMany(e => e.List).WithMany(e => e.Users).Map(ca => ca.MapLeftKey(new string[] {"UserId"}).MapRightKey(new string[] {"ListId"}).ToTable("ListUserAssociation");
我相信你只需要一行或另一行来定义关系。即使它是多余的,我也希望包含两行,以便我看到从任一实体定义的关系(我将所有映射代码放在每个实体的不同类中)。