我有实体
ID
名称
导航:群组
ID
名称
导航:用户
关系:
ID用户所
idgroup
这里我不想向关系而不是主要实体添加数据。请举个例子 如何删除并插入usrgrp。
提前致谢。 第
答案 0 :(得分:1)
实体框架将usrgrp表包含在导航中。它不会有实体。因此,对此表的所有访问仅通过用户和组实体。由于这是多对多的关系,因此您可以从两端以相同的方式访问关系。
someUser.Group.Add(new Group());
someUser.Group.Remove(someExistingGroup);
context.SaveChanges();
答案 1 :(得分:1)
Craig是对的,因为usrgrp
表只有2个FK,它是纯连接表,因此实体框架将其解释为ManyToMany关联。
正如Craig上面的代码示例所示,这对大多数客户来说通常都很好。
如果您想要独立管理UserGroup关系,一个选项是在usrgrp表中添加一个额外的列,标识列可能是最简单的。然后,实体框架可以不再将此表折叠为导航,因此您将看到可以独立操作的usrgrp表的实体。
即。
someUser.UserGroups.Add(new UserGroup {User = someUser, Group = someGroup});
请注意,您不必指定Identity列(这会很麻烦),因为它是存储生成的。
通常,大多数客户不希望看到纯连接表的实体,因为没有它,编程体验会更简单。例如,LINQ查询变得有点复杂:
这样:
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;
希望这个额外的澄清帮助
亚历