4

ハンドヘルド デバイスで使用する既存のデータベースを公開する ASP.Net Web API を作成しています。私はまた、Web API、EF、およびこのプロジェクトで使用しようとしている他のすべてについて比較的新しいです:)

結果のデータ転送をできるだけ軽量にしたいのですが、API がオブジェクトを返すとき、シリアル化された JSON にはそれ自体の「EntityKey」フィールドと、オブジェクトが関係している他のテーブルの行があります。

現在、モデル コードの生成に ADO.NET DbContext Template Generator を使用しようとしています。これにより EntityKey フィールドが削除されますが、JSON に関係が表示されます。

私が望むのは、オブジェクトのフィールドをシリアル化し、挿入と更新のために JSON をこれらのオブジェクトに逆シリアル化できるようにすることだけです。これを行う組み込みの方法はありますか?

私の最善の策は何ですか?

4

2 に答える 2

3

戻り値で新しいタイプを「選択」します

return ienumfromedmx.Select(o=> new { id = id, value = value, name = name});

これらはあなたが返したい値です

いくつかのサンプルコードを投稿すると、より関連性の高いコード例を提供する方が簡単かもしれません

あなたの本を使って

public Book GetBook(int id) { return books.SingleOrDefault(b => b.Id == id);}

への変更

public dynamic GetBook(int id){
return books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price});
}

また

public object GetBook(int id){
return books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price});
}

OR (参考のために - JsonResult ではなく API に動的またはオブジェクトを使用します)

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price}));
}

使用している場合は注意してください

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price}));
}

postではなくhttpgetを使用している場合は、使用する必要があります

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price},JsonRequestBehavior.AllowGet);
}
于 2012-06-18T22:53:43.377 に答える
2

遅延読み込みをオフにすると、Include呼び出しで明示的に読み込みしない限り、メソッドはリレーションを返しません。

dbContext.Configuration.LazyLoadingEnabled = false;
// now load your data and return them to serialization
于 2012-06-19T07:59:08.437 に答える