Web Apiで結果を返す前に、EF5で遅延読み込みとプロキシ作成を無効にしました。すべてがうまくいきました。ただし、Include()
熱心にフェッチするために他のエンティティを開始すると、JSONオブジェクトの一部は次のようになります。
{
$ref: "14"
},
.. correct objects ..
{
$ref: "6"
},
..
"$ref"
結果のリストに含まれるのは何ですか?
Web Apiで結果を返す前に、EF5で遅延読み込みとプロキシ作成を無効にしました。すべてがうまくいきました。ただし、Include()
熱心にフェッチするために他のエンティティを開始すると、JSONオブジェクトの一部は次のようになります。
{
$ref: "14"
},
.. correct objects ..
{
$ref: "6"
},
..
"$ref"
結果のリストに含まれるのは何ですか?
これはJSON.NETシリアライザーからのものです。オブジェクト参照を保持しています。を見てくださいfollowing blog post
。オブジェクトグラフに循環参照がいくつかあると思いますが、JSON.NETは、クラッシュせずにこのEF構造をシリアル化するための必死の努力で最善を尽くしています(これはほとんどのJSONシリアライザーがとにかく行うことです)。しかし、それは標準ではありません。
個人的なアドバイス:EFエンティティをシリアル化しないでください。常にビューモデルを定義し、WebAPIメソッドが関心のあるプロパティのみを含むビューモデルを返すようにします。
EFエンティティをシリアル化する必要がある場合は、遅延読み込みを無効にすることもできます。それは私のために働いた。
edmxファイルの下のcontext.csファイルに移動し、この行をコンストラクターに追加します。
this.Configuration.LazyLoadingEnabled = false;