EF データベース ファーストのアプローチと MVC 4.5/Web API を使用して Web アプリを構築するための最も単純でベスト プラクティスのアプローチを探しています。私のアプリケーションは、angular フレームワークを使用して ajax 呼び出しを行い、json データをオンデマンドで取得します。
現在、API 呼び出しに応答して過剰で構造化されていないデータを取得しており、それをクリーンアップする方法を知りたいです。
アプリケーションはジョブ追跡を提供するので、次のようなテーブルがあります。
Person
Id
Name
Email
Department : FK -> Department
Department
Id
Name
Jobs
Id
RequestedBy : FK -> Person
AssignedTo : FK -> Person
JobHistory
Id
JobId : FK -> Jobs
だから、理想的には私が電話するとき
$http.get(/api/People)
私は得るだろう:
[{Name: 'alice', Email: 'alice@here.com', Department: 'ABC'},
{Name: 'bob', Email: 'bob@here.com', Department: 'CDE'}]
これは、通常、プリンシパル エンティティが熱心に読み込まれるが、Person に依存する他のすべてのテーブルが読み込まれるわけではないことを意味すると思います。しかし、これらの後方参照を使用して、個人が取り組んでいる、または要求したすべてのジョブを取得したい場合があります。
できれば、T4 テンプレートの変更などに頼る必要はありません。それは賢明ですが、あまり柔軟ではありません。また、電動工具を渡されるのが嫌で、使う前に回路図を調べて内部を再配線しなければならないと言いました。私はプロの開発者ではなく、ツールではなく仕事に集中したいと思っています。Linq2Sql はその点で非常に優れていました。もちろん、内臓を改造するのが正解なら、そうします。
これは、Web API の非常に簡単な使い方のように思えますが、明らかな何かが欠けていると確信しています。
ありがとう
私の問題の一部を引き起こしている可能性が最も高い追加情報を編集します。ある時点で、上記を機能させるために、次を Global.asax.cs に追加しました。
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All;
積極的な読み込みでは、Person を参照する Jobs の 2 つのフィールドが循環参照になります。上記のコードにより、Json.Net はそれをシリアル化できますが、json に不要なデータが入ります。解決策は何らかの形で遅延読み込みに切り替えることだと思いますが、これはデータベースの最初のアプローチで行うことができますか?