【问题标题】:How to specify what level of SQL hierarchy to return?如何指定要返回的 SQL 层次结构的级别?
【发布时间】:2016-01-04 03:00:26
【问题描述】:

使用 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

【问题讨论】:

  • 您能更详细地了解您的模型吗?您可能需要解决女士加载问题。看看this tutorial中的懒加载

标签: c# sql asp.net


【解决方案1】:

您在entity framework 中查找Eager loadingLazy loading

延迟加载:当您执行查询(序列化对象、强制转换为可枚举、列表等)时,数据将自动加载

急切加载仅在您需要时手动加载数据(使用Include() 函数)

如果你想关闭Lazy Loading你可以使用下面的块代码

Configuration.LazyLoadingEnabled = false; // in the db context class

【讨论】:

    【解决方案2】:

    如果您不希望全局禁用延迟加载(Configuration.LazyLoadingEnabled 会这样做),您可以在声明中通过omitting the virtual key word 定位特定属性。

    【讨论】:

    • 也是一个好消息! (这一定是你问模型长什么样的原因……)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 2018-01-03
    • 2013-07-04
    相关资源
    最近更新 更多