我的WCF服务可以从代码的第一个模型回归类的唯一方法是通过设置ProxyCreationEnable来false使用下面的代码。
ProxyCreationEnable
false
((IObjectContextAdapter)MyDb).ObjectContext.ContextOptions.ProxyCreationEnable = false;
这样做的负面后果是什么?一个好处是,我至少可以将这些动态类型序列化,以便可以使用WCF通过电线发送它们。
动态代理用于更改跟踪和延迟加载。当WCF尝试序列化对象时,通常会关闭并处置相关的上下文,但是导航属性的序列化将自动触发延迟加载(在封闭的上下文上)=>异常。
如果您关闭延迟加载,则需要对所有要使用的导航属性使用快速加载(在ObjectQuery上包含)。跟踪更改不适用于WCF,它仅适用于修改附加到ObjectContext的实体。