我正在尝试了解一些使用 Entity Framework 的基本最佳实践。
我的 EDM 设计有 Group 和 User 实体,其中 Group 可能包含用户和其他组。
问题是:
从组中检索用户的最佳方法是什么?
为了让组变得简单,只需创建上下文对象并从组表中创建一个列表。
但是当我想查看组内的用户时,上下文是关闭的(应该是这样)。
我想到了两种方法:
1) 将组发回,将其附加到上下文并对用户使用 Load() 方法并返回用户列表。
在这里,我不知道什么时候附加,什么时候不应该附加,以及 EDM 什么时候增长,我将不得不为每个加载引用来回做很多事情
2) 用户端的linq查询。
从你在 context.Users where u.Groups.Contains(group) 选择你
这里我得到一个异常,只能使用原始类型。
那么正确的做法是什么?
谢谢 罗尼
最佳答案
不太清楚您的用户和组之间是一对多还是多对多关系。根据上面的描述,一个组可能包含用户
- 它是一对多的。根据您的代码: from u in context.Users where u.Groups.Contains(group) select u
- 它是多对多的。因此,我将为这两种情况提供示例。
一对多 - 一个组包含多个用户,一个用户只能属于一个组:
context.Users.Where(u => u.Group.Id == group.Id);
多对多 - 一个组包含多个用户,一个用户可以属于多个组:
context.Users.Where(u => u.Groups.Any(g => g.Id == group.Id));
关于c# - 使用 Entity Framework 4.0 检索数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232249/