EF4:仅序列化 Poco 对象的预先加载的导航属性

本文关键字:导航 属性 加载 对象 序列化 Poco EF4 | 更新日期: 2023-09-27 17:57:01

我正在使用返回POCO对象的WCF服务。我的导航属性被标记为虚拟以启用延迟加载/代理。我还使用 [ApplyDataContractResolver] 模式将代理序列化为父 POCO 对象。一切正常,直到我将导航属性添加到关系的双方,这会导致循环引用 - 导致它无法正确序列化。有没有办法告诉序列化程序仅序列化预先加载的(使用 .include())导航属性并忽略尚未加载的导航属性而不是填充它们?

EF4:仅序列化 Poco 对象的预先加载的导航属性

除非手动定义,否则无法仅序列化预先加载的属性。此外,它不会帮助你,因为你仍然可以拥有带有循环引用的急切加载实体。如果要通过 WCF 发送 POCO,则应关闭延迟加载,因为除非按属性从序列化中永久排除所有这些属性,否则您将永远无法避免延迟加载不必要的属性,但在这种情况下,它们也不会在预先加载后序列化。