【发布时间】:2010-04-21 11:12:52
【问题描述】:
我有一个 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 未被用户代码处理 消息=有一个错误,而 试图序列化参数 http://tempuri.org/:searchCriteria。 InnerException 消息是“对象 graph ...' 包含循环并且不能 如果引用不被序列化 跟踪。考虑使用 DataContractAttribute 与 IsReference 属性设置为 true。'
所以循环引用现在是 Silverlight 中的一个问题,所以我尝试将我的 DataContract 更改为 [DataContract(IsReference=true)] 但现在当我尝试从我的服务中检索对象时出现以下异常:
System.ExecutionEngineException 未处理 Message=Exception of 输入“System.ExecutionEngineException” 被抛出。内部异常:
有什么想法吗?
【问题讨论】:
标签: wcf silverlight serialization datacontract