使用ASP.NET 4.5和EF 6,我整理了一个如下所示的多级数据模型:
组织,其ICollection为:
_____ 工作区,其ICollection为:
__________ 项目,其ICollection为:
_______________的卡
当我向数据库询问使用以下代码的组织列表时,我得到了一个巨大的多级嵌套响应数据库中的所有对象。
var orgs = await (from o in db.Organizations select o).ToListAsync();
如何指定我只想返回顶级? (或任何其他特定的搜索深度?)
我确信这很容易,但我是SQL C#世界的新手,并且不知道找到有用的Google或SO答案的正确语言......
更新:kienct89获胜!
“延迟加载”是正确的术语,这里是some good info about it。
答案 0 :(得分:2)
您正在[{1}}
中寻找Eager loading
与Lazy loading
的对比
延迟加载:执行查询(序列化对象,强制转换为枚举,列表等)时,数据将自动
急切加载:数据将手动加载仅在您想要时(使用entity framework
功能)
如果您想关闭Include()
,可以使用下面的代码
Lazy Loading
答案 1 :(得分:1)
如果您不希望全局禁用延迟加载(Configuration.LazyLoadingEnabled会这样做),您可以在声明中按omitting the virtual key word定位特定属性。