在Code First中指定关联表

时间:2014-12-06 02:24:08

标签: entity-framework

考虑名为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。我不能放弃并重新创建表格。

1 个答案:

答案 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");

我相信你只需要一行或另一行来定义关系。即使它是多余的,我也希望包含两行,以便我看到从任一实体定义的关系(我将所有映射代码放在每个实体的不同类中)。