【发布时间】: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