编程语言
首页 > 编程语言> > c#-使用Entity Framework 4.0检索数据的最佳实践

c#-使用Entity Framework 4.0检索数据的最佳实践

作者:互联网

我正在尝试了解使用实体框架的一些基本最佳实践.

我的EDM设计具有“组”和“用户”实体,“组”可以包含用户和其他组.

问题是:

从组中检索用户的最佳方法是什么?

为了使组变得容易,只需创建上下文对象并从groups表中创建列表即可.

但是,当我希望看到组中的用户时,上下文是关闭的(应该如此).

我考虑了两种方法:

1)将组发回,将其附加到上下文,并在Users上使用Load()方法并返回“用户列表”.

在这里,我不知道何时附加,何时不附加以及EDM何时增长,对于要加载的每个引用,我都必须做很多来回操作

2)从用户端查询linq.
    从u上下文中从u.Groups.Contains(group)选择u的用户

在这里,我得到一个例外,即只能使用原始类型.

那么正确的做法是什么?

谢谢
罗尼

解决方法:

尚不清楚用户和组之间是一对多还是多对多关系.根据上面的描述,一个组可能包含用户-它是一对多的.根据您的代码:从u的context.Users中,其中u.Groups.Contains(group)选择u-多对多.因此,我将提供两种情况的样本.

一对多-一个组包含多个用户,一个用户只能属于一个组:

context.Users.Where(u => u.Group.Id == group.Id);

多对多-一个组包含多个用户,一个用户可以属于多个组:

context.Users.Where(u => u.Groups.Any(g => g.Id == group.Id));

标签:linq,c,entity-framework
来源: https://codeday.me/bug/20191209/2097880.html