1

MVC 4 のシングル ページ アプリケーションのベータ版を見ると、従来のドメイン オブジェクトをモデルとして使用する方法がわかりません。モデルがエンティティ フレームワークを使用して DbDataController を使用してデータなどを取得する必要があるようです。

エンティティ フレームワークを理解していないため、おそらく何かが不足しています。

MVC 4 の SPA でレガシー ドメイン (独自の DAL を使用) を使用するにはどうすればよいですか?

4

1 に答える 1

0

これは、ASP.NET フォーラムの他の誰かによって回答されました。

これらの RAD ツールの一部を使用する場合、EF 以外は使用できません。ただし、SPA は MVC の上に構築されるため、独自のバージョンをかなり簡単に構築できるはずです。重要なコンポーネントは、ApiController の上に DataController を構築し、DataController によって提供されるサービスの js コンシューマーを構築することです。モデルを EF 出力と同じ形式でフォーマットする場合 (単なる OData だと思います)、upshot.js も使用でき、DataController を実装してドメイン モデルをフォーマットするだけで済みます。

数日間使用した後、理論的には、次のものがあなたと将来のバージョンの SPA によって処理/修正された場合に使用できることを追加します。

System.Web.Http.Data.DataController (および場合によっては ApiController) から継承するコントローラーを作成できます。返されるオブジェクトには、System.ComponentModel.DataAnnotations.Key() 属性で装飾されたプロパティが必要です。ビューを正常に動作させることはできますが、グループ化などのより高度な機能の一部で問題が発生しています。

現在使用されている JSON シリアライザーに問題があるため、読み取り専用プロパティは返されません。修正する必要があります。

もちろん、オブジェクト全体がシリアル化されるため、ドメイン オブジェクトが子オブジェクトと複雑な場合、非常に問題になる可能性があります。特に、これらのオブジェクトの一部に独自のシリアル化の問題がある場合。

複雑なシリアル化に関連して、現在の JSON シリアライザーは、参照されるドメイン オブジェクトの循環参照を処理できません。

System.Web.Http.Data.DataController (例では DBDataController を使用) から継承する独自のコントローラーを使用すると、更新/削除/挿入がポストバックされるという問題にも遭遇しました。

于 2012-03-28T19:01:52.853 に答える