我有一个 Silverlight 3 UI,它可以访问 WCF 服务,而这些服务又可以访问使用 NHibernate 的存储库。为了克服 WCF 的一些 NHibernate 延迟加载问题,我使用了我自己的 DataContract 代理,如下所述:http: //timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx。在这里我设置了 preserveObjectReferences = true
我的模型包含循环(即带有 IList[Order] 的客户)
当我从我的服务中检索一个对象时,它工作正常,但是当我尝试将同一个对象发送回 wcf 服务时,我得到了错误:
System.ServiceModel.CommunicationException 未被用户代码处理 Message=尝试序列化参数 http://tempuri.org/:searchCriteria时出错。InnerException 消息是“对象图 ...”包含循环,如果不跟踪引用,则无法序列化。考虑使用将 IsReference 属性设置为 true 的 DataContractAttribute。
所以循环引用现在是 Silverlight 中的一个问题,所以我尝试将我的 DataContract 更改为 [DataContract(IsReference=true)] 但现在当我尝试从我的服务中检索一个对象时,我得到以下异常:
System.ExecutionEngineException 未处理 消息=引发了“System.ExecutionEngineException”类型的异常。内部异常:
有任何想法吗?