私は、NHibernate を使用するリポジトリにアクセスする WCF サービスにアクセスする Silverlight 3 UI を持っています。WCF での NHibernate の遅延読み込みの問題を克服するために、http: //timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspxで説明されているように、独自の DataContract サロゲートを使用しています。ここでは 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' の例外がスローされました。内部例外:
何か案は?