6

Web Apiで結果を返す前に、EF5で遅延読み込みとプロキシ作成を無効にしました。すべてがうまくいきました。ただし、Include()熱心にフェッチするために他のエンティティを開始すると、JSONオブジェクトの一部は次のようになります。

{
$ref: "14"
},
.. correct objects ..
{
$ref: "6"
},
..

"$ref"結果のリストに含まれるのは何ですか?

4

2 に答える 2

14

これはJSON.NETシリアライザーからのものです。オブジェクト参照を保持しています。を見てくださいfollowing blog post。オブジェクトグラフに循環参照がいくつかあると思いますが、JSON.NETは、クラッシュせずにこのEF構造をシリアル化するための必死の努力で最善を尽くしています(これはほとんどのJSONシリアライザーがとにかく行うことです)。しかし、それは標準ではありません。

個人的なアドバイス:EFエンティティをシリアル化しないでください。常にビューモデルを定義し、WebAPIメソッドが関心のあるプロパティのみを含むビューモデルを返すようにします。

于 2013-02-04T07:38:33.273 に答える
0

EFエンティティをシリアル化する必要がある場合は、遅延読み込みを無効にすることもできます。それは私のために働いた。

edmxファイルの下のcontext.csファイルに移動し、この行をコンストラクターに追加します。

this.Configuration.LazyLoadingEnabled = false;

于 2019-08-22T14:59:22.667 に答える