【问题标题】:Lazy load for nonnavigation property in EF 4.1EF 4.1 中非导航属性的延迟加载
【发布时间】:2011-08-11 01:02:27
【问题描述】:

在 EF 4.1 中是否有一个简单的解决方案来延迟加载非导航属性?例如,对于字节数组。

【问题讨论】:

    标签: mapping entity-framework-4.1 lazy-loading


    【解决方案1】:

    没有 EF 不为标量和复杂属性提供延迟加载。诀窍是使用表拆分,其中来自单个表的数据被映射到两个与一对一关系相关的实体。一个实体是主体,它包含依赖项的导航属性,因此您可以使用延迟加载。 Here is the question 带有如何在 EDMX 中执行此操作的链接,答案提供了代码优先映射的解决方案(cmets 包含指向 MSDN 论坛中另一个示例的链接)。

    【讨论】:

    • @zonder,+1,完全同意你的看法。 “表拆分”策略是缺少常规延迟加载等必要功能的最丑陋的解决方法。
    • EF s*cks。我有一个带有 xml 有效负载的表,我希望能够排除一些(实际上是大多数)时间。你认为我可以——不。我决定暂时加载它,然后我将返回手动创建连接。我总是在一段时间后最终折腾这些框架。一次又一次。
    【解决方案2】:

    我想不出任何情况,您希望在表中延迟加载列,并且无法证明将其放在自己的表中并映射一个单独的实体来表示它是合理的。如果您想要延迟加载列,这可能表明您需要创建一个单独的实体。如果您要将 EF 映射到旧数据库,请忽略我刚才所说的一切。

    【讨论】:

    • 例如,当您需要使用实体在列表中显示以及创建或更新时。如果是列表,您不需要加载实体的所有信息。当您只需要使用实体数据的一部分时,这是很多情况之一。
    • 任何比简单字符串更大的内容,例如图像数据、xml 或附加到实体的其他此类有效负载数据。为什么每次我有图像/ xml 或其他任何东西时都必须创建一对一的关系和索引。一对一的关系在最好的时候是一种痛苦,所以为什么要扩大它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多