在“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(或任何序列化)只是关闭延迟加载 不削减它。您必须关闭代理创建才能确保 您的课程将正确序列化
我怀疑上述评论是错误的。
答案 0 :(得分:1)
是的,ContextOptions.LazyLoadingEnabled
是“方式”。序列化问题是相关的,但不同。代理具有不同的运行时类型。这可以是绿色序列化。延迟加载的唯一关系是纯(非代理)POCO不进行延迟加载。