【问题标题】:POCO/PROXY Disabling Lazy LoadingPOCO/PROXY 禁用延迟加载
【发布时间】:2011-10-16 18:20:09
【问题描述】:

在“Entity Framework 4 in Action”一书的第 16.1.3 节和第 16.2.4 节中,都有说明

如果你有代理实例,记得在之前禁用延迟加载 序列化,否则您最终会向客户端发送不需要的数据。

但是,作者从未说过如何禁用延迟加载。在我自己的搜索中,我听说过 ContextOptions.LazyLoadingEnabled。这是完成的“方式”吗?是否有不止一种方法(除了禁用代理生成)?

我在one article 中读到,LazyLoadingEnabled 标志仅适用于 EntityObject 实体,而不适用于 POCO 实体:

现在关闭延迟加载将允许您的类被序列化 适当地。请注意,这是如果您使用的是标准实体 框架类。如果您使用的是 POCO,则必须这样做 稍有不同。

使用 POCO,Entity Framework 将默认创建代理类 允许延迟加载之类的东西与 POCO 一起工作。这个代理 基本上创建一个代理对象,它是一个完整的实体框架 位于上下文和 POCO 对象之间的对象。使用时 带有 WCF(或任何序列化)的 POCO 只是关闭延迟加载 不削减它。您必须关闭代理创建以确保 你的类将正确序列化

我怀疑上述评论完全是错误的。

【问题讨论】:

    标签: c# entity-framework serialization lazy-loading poco


    【解决方案1】:

    是的,ContextOptions.LazyLoadingEnabled 是“路”。序列化问题是相关的,但有所不同。代理有不同的运行时类型。那可以mung序列化。与延迟加载的唯一关系是纯(非代理)POCO 不进行延迟加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      相关资源
      最近更新 更多