Entity Framework 连接了两个具有复合键的表

Two tables with composite key are joined in Entity Framework

我在SQL服务器上有四个table,图像table和关系。

问题是当我使用 Entity Framework 时 GroupAdminsGroupMembers table 被合并为一个 table,图像显示情况:

我想获得 Entity Framework 中的四个 table。我该怎么办?

更新

真正的问题是我无法像处理其他 table 一样为 GroupAdminsGroupMembers table 添加或删除项目秒。例如,如果我想将项目添加到 AspNetUsers,我使用这个:

using (var db=new DatabaseContext())
      {
        AspNetUsers user = new AspNetUsers{Id=1,Email="something@email.com"};
        db.AspNetUsers.add(user);
        db.SaveChanges();
      }

虽然我不能为 GroupAdminsGroupMembers 做同样的事情,因为 GroupAdminsGroupMembers 不存在。

如果你有两个table之间的many-to-many关系,在关系数据库中,你需要一个"link"table连接两个碱基tables.

EF 会自动为您处理 - 它没有明确地表明 link table - 它在幕后内部处理这些插入和删除。您根本不需要做任何特别的事情!使用这个默认行为 - 不要抗拒它!它对你有利!

你所做的基本上是将 table 之一的新条目添加到 collection-based 导航 属性 中,然后 EF 将自动将必要的条目插入相关 link table.

例如,您可以这样做:

using (var db = new DatabaseContext())
{
    AspNetUsers user = new AspNetUsers { Id = 1, Email = "something@email.com" };
    db.AspNetUsers.add(user);

    // get a group to add the new user to
    Groups g = db.Groups.FirstOrDefault(g => g.Name = "SomeGroupName");

    if(g != null)
    {
        // since I don't have your EDMX model here, I don't know if "AspNetUsers" for the "Groups"
        // refers to the "GroupMembers" or the "GroupAdmins" connection - *YOU* can see this when
        // you look at the EDMX model designer!
        g.AspNetUsers.Add(user);
    }

    // now when you save, you'll get a new user in "AspNetUsers", AND ALSO: you'll get an entry
    // in either "GropuMembers" or "GroupAdmins" that contains the two ID's - AspNetUsers.Id 
    // and the Id for the group with the name of "SomeGroupName"
    db.SaveChanges();

}