2017-05-03 3 views
0

私は現在、MVCアプリケーションの設計の冒頭にいます。MVCデータ設計の決定

いくつかのテストをプロトタイプで実行しているうちに、データの処理方法に問題が発生しました。

は、ここで簡単なDB diagram

だ私のプロトタイプで作業する場合、私は、Entity FrameworkはSQLから必要なすべてのモデルを構築するとき、それはJob_Position_Link_TableへEMPLOYEE_TABLEからいるICollection関係を作成することに気づきました。ビューが厳密にEmployee_Tableに型付けされている場合、Job_Position_Link_Tableの属性に直接アクセスすることはできません。また、Job_Position_Title_Tableにもアクセスできません。私はこの問題のViewModelを作成しましたが、ICollectionを使って作業しているときにViewModelを作成する方法に関するチュートリアルは見つかりませんでした。ほとんどのチュートリアルはコードの最初のアプローチから来ており、継承されたデータベースを扱っています。

私が考えていた解決策は、SQLですべてのビューを作成し、MVCに渡すことでした。

私はまだMVCを初めて使っていますが、このシナリオのベストプラクティスはどういうものかと思いましたか?

答えて

1

ビューをEFエンティティにバインドしないでください。その代わりに、必要なプロパティを持つビューモデルクラスを作成し、EFエンティティをこれらのVMに変換します(これは手動または自動マッパーの助けを借りて行うことができます)。次に、ビューをビューモデルにバインドすることができます。

コントローラの仕事は、ビューモデルを構築してレンダリングのためにビューエンジンに送信することです。したがって、ビューは、プレゼンテーションの準備ができているビューモデルを期待する必要があります。

+0

Entity FrameworkがICollection を作成するViewModelを作成するのが最善でしょうか?現在、ICollection AtElement(int)から何かにアクセスしようとすると、常にnull参照例外がスローされます。 – AWinter

+0

結合コレクションについては、EF結合クエリを作成し、カスタムデータコントラクト(IEnumerable )を返します。 .Dataレイヤー内にEFエンティティを保持し、メソッドがカスタム作成エンティティを返すようにします(DTOを他のユーザーと呼んでデータコントラクトと呼ぶものもあります) –

+0

ありがとうございます。私はこれが正しい軌道に乗ると思う。 – AWinter

関連する問題