0

外部キーの関係を持つデータベーステーブルを定義する単純なADO.NETEntityFramework 4.0モデル(edmx)があります。

これらのエンティティをWindowsPhone7クライアントに送信するにはどうすればよいですか?メソッドを使用して(WShttpbindingを使用して)WCFサービスを作成しました...

public List<LocationCity> ListCities()
{    
   var dc = ObjectFactory.GetInstance<TestEntities>();
   var locs = dc.LocationCities.Take(10).ToList();
   return locs;
}

このサービスを利用するための単純なコンソールアプリケーションも作成しましたが、機能しません...トレースで例外が表示されます

オブジェクトグラフでシリアル化または逆シリアル化できるアイテムの最大数は「65536」です。

System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPartで

次に、MaxItemsInObjectGraphを大量の数値に変更しました。これは、何が起こるかを確認するためだけで、スタックオーバーフロー例外が発生します。したがって、dataContractSerializerがオブジェクトグラフの循環プロパティをナビゲートし、再帰ループに入っているように見えます。

私がやりたいのは、10個のLocationCityエンティティをクライアント(Windows Phoneまたはコンソール)に送信することだけです。

個別のDataContractPOCOエンティティを作成し、コンテキストの選択からそれらを設定できると思います...しかし、正当な理由がない限り、クラスを複製する必要はありません。私は何か間違ったことをしているに違いないと思います。

助けていただければ幸いです。

4

2 に答える 2

2

循環参照を処理する秘訣は、[DataContract(IsReference = true)]を使用することです。IsReferenceプロパティは.NET3.5SP1以降で使用できるため、問題はありません。

よろしく、ラディスラフ

于 2010-08-17T14:03:45.297 に答える
0

エンティティデザイナ内で「LazyLoadingEnabled」をtrueに設定しました。falseに設定するだけで、すべて問題ありません。

于 2010-08-17T14:21:54.117 に答える