【发布时间】:2013-07-10 16:43:26
【问题描述】:
我有以下从带有存储库的脚手架模板自动生成的方法:-
public Group Find(int id)
{
return context.Groups.Find(id);
}
但是由于 Groups 对象有两个我需要的导航属性,所以我想包含 .Include,所以我将 .find 替换为 .where :-
public Group Find(int id)
{
return context.Groups.Where(c=>c.GroupID==id)
.Include(a => a.UserGroups)
.Include(a2 => a2.SecurityRoles)
.SingleOrDefault();
}
但我的问题是如何将.Include 与.find() 一起应用,而不是使用.Where()?
【问题讨论】:
-
您可以通过将过滤器传递给单个调用并删除 where 子句来进一步简化,例如
.SingleOrDefault(c=>c.GroupID==id) -
那么 .Where 和 .Find 有什么区别??
-
看看where和find的区别,msdn.microsoft.com/en-us/data/jj573936.aspx,基本上find只能按键搜索,如果你之前查询过实体,会有细微的优化。这是优化实际上是你不能使用包含的根本原因
-
您可以在 EF core 5.0
return context.Groups.Include(a => a.UserGroups).Include(a2 => a2.SecurityRoles).FirstOrDefault(c => c.GroupID == id);中执行此操作
标签: entity-framework