POCO / PROXY禁用延迟加载

时间:2011-07-31 02:42:34

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

在“Entity Framework 4 in Action”一书中,在第16.1.3节和16.2.4中再次提到

  

如果您有代理实例,请记得先禁用延迟加载   序列化,或者您最终会向客户端发送不需要的数据。

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

我在one article中读到LazyLoadingEnabled标志只与EntityObject实体有关,而不是POCO entites:

  

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

     

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

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

1 个答案:

答案 0 :(得分:1)

是的,ContextOptions.LazyLoadingEnabled是“方式”。序列化问题是相关的,但不同。代理具有不同的运行时类型。这可以是绿色序列化。延迟加载的唯一关系是纯(非代理)POCO不进行延迟加载。