继续我的用户场景:entity-framework-updating-with-stub-causes-primary-key-violation
使用EF6,我的表结构如下:
Users - UserCodePK, UserName
UserGroups - UserCodeFK,GroupCodeFK
Groups - GroupCodePK,GroupDescription
我正在尝试编写一个方法来返回用户是否出现列表中的任何组:
public static bool InUserGroup(string userCode, List<string> userGroupList)
{
using (var dbContext = new MyEntities())
{
var results = dbContext.Users.Where(u => u.UserCodePK == userCode).FirstOrDefault();
return results.UserGroups.Where(ug => userGroupList.Contains(ug.GroupCodePK)).Any();
}
}
这确实有效,但我不认为它是非常有效的,因为它正在进行2次数据库调用。
我怎么能改写这个更高效,即。一个数据库调用?
答案 0 :(得分:0)
您可以尝试这样做:
return dbContext.Users.Where(u => u.UserCodePK == userCode
&& u.UserGroups.Where(ug => userGroupList.Contains(ug.GroupCodePK)).Any();
它应该被翻译成单个数据库调用。