一般に、MVCの 'Model'部分は、 'Presentation Model'または 'View Model' - つまり、Viewに必要なすべてのデータと動作をカプセル化するクラスとして解釈される必要があります。これは、ドメインモデルと同等であってもなくてもよい。
ドメインモデルは、UIから独立するように設計する必要があります。つまり、そのようなモデルは、特定のボタンが有効かどうかの判断など、UI固有のデータと動作で汚染されるべきではありません。
同じドメインオブジェクトをいくつかの異なるビュー(マスター/ディテール、または表示/編集など)で表示し、それらのビューが十分に異なる場合は、各ビューのビューモデルを有効にすることもできます。
一般に、ドメインレイヤーとプレゼンテーションレイヤーを個別に設計する必要があります。
ドメインレイヤーでは、3つのテーブルを3つのクラスとしてモデル化することができます。 FowlerのPatterns of Enterprise Application ArchitectureとEvansのDomain-Driven Designのような書籍には、リレーショナルデータをドメインモデルとしてモデル化する方法に関する多くのガイダンスが含まれています。
MVCでビューをモデリングする場合、ビューごとに1つのモデルを作成することが最も理にかなっています。このようなビューモデルは、単一のドメインオブジェクトを単純にカプセル化するだけでなく、複数の異なるドメインオブジェクトをカプセル化して集約することもできます。
このようにして、懸念事項を確実に分離し、クラスが単一責任原則に従うようにすることができます。
非常に単純なシナリオでは、ドメインモデルとプレゼンテーションモデルを1つのレイヤーに折り畳むことは意味がありますが、これは本質的にソリューションにドメインモデルがないことを意味するはずです。すべてのモデルは純粋なプレゼンテーションモデル。
私はこれらの3つのテーブルに参加したいのですが、どこにコードを入れるべきですか? – Billy
また、「多対多」の関係がある場合は、通常、モデルによって表されない関係を表す表があります。 –
最も明白な方法は、関連付けられたデータを表すクラスにプロパティを追加することです。 (つまり、 'Customer'クラスには 'Order'という名前のプロパティがあり、これは 'Order'クラスのコレクションになります(これはあなたのためにすべての作業を行うADO.NET Entityフレームワークを使用すると考えられます) – yosig81