Entity framework 多对多关系插入和删除

Entity framework 多对多关系插入和删除,entity-framework,Entity Framework,我有实体 用户: 身份证 名字 导航:组 组: 身份证 名字 导航:用户 关系: usrgrp 用户 idgroup 这里我不想向关系中添加数据,而不是向主要实体中添加数据。请给我举个例子 如何删除并插入usrgrp 提前谢谢。 s、 实体框架将把usrgrp表包含到导航中。它不会有一个实体。因此,只能通过用户和组实体访问此表。由于这是一种多对多关系,因此您可以从任意一端以大致相同的方式访问该关系 someUser.Group.Add(new Group()); someUser.G

我有实体

  • 用户:
身份证

名字

导航:组

  • 组:
身份证

名字

导航:用户

关系:

  • usrgrp
用户

idgroup

这里我不想向关系中添加数据,而不是向主要实体中添加数据。请给我举个例子 如何删除并插入usrgrp

提前谢谢。
s、

实体框架将把usrgrp表包含到导航中。它不会有一个实体。因此,只能通过用户和组实体访问此表。由于这是一种多对多关系,因此您可以从任意一端以大致相同的方式访问该关系

someUser.Group.Add(new Group());
someUser.Group.Remove(someExistingGroup);
context.SaveChanges();

Craig是正确的,因为
usrgrp
表只有两个FK,它是一个纯联接表,因此实体框架将其解释为多个关联

正如上面Craig的代码示例所示,这对于大多数客户来说通常是好的

但是,如果您想独立管理用户组关系,一个选项是向usrgrp表中添加一个额外的列,标识列可能是最简单的。实体框架再也不能将该表折叠为导航,因此您将看到usrgrp表的实体,您可以独立操作该实体

i、 e

注意,您不必指定标识列(这将是一个难题),因为它是存储生成的

一般来说,大多数客户不希望看到纯联接表的实体,因为没有实体的编程体验更简单。例如,LINQ查询变得更加复杂:

这:

变成:

var users = from g in ctx.Groups
            from ug in g.UserGroups
            where g.Name == "Administrators"
            select ug.User;
希望这个额外的澄清能有所帮助


Alex

那么,EF 4.0的导航属性呢?:)克雷格,我不明白你的问题。你能澄清一下吗?我希望能够拥有包含导航的属性。现在,如果一个表只包含两个键,那么它将被包含为多对多。我希望能够在客户机中拥有(和读/写)用于多对多的表中的其他字段。
var users = from g in ctx.Groups
            from u in g.Users
            where g.Name == "Administrators"
            select u;
var users = from g in ctx.Groups
            from ug in g.UserGroups
            where g.Name == "Administrators"
            select ug.User;