3

Entity Framework Code First を使用して、ASP.Net MVC 4 Web アプリケーションの作業を開始しようとしています。データベースが既に存在するため、ドメイン クラスを生成するためにリバース エンジニアリングを実行する Code First の機能を使用しています。

次に、これらのドメイン クラスをソリューション内の独自の別のプロジェクトに配置して、永続性を無視するようにしたいと考えています。ただし、(Entity Framework Power Tools を使用して) データベースをリバース エンジニアリングするツールを実行すると、ドメイン クラスが作成されるだけでなく、Fluent API を使用する各ドメイン クラスのマッピング クラスを含む Mapping というフォルダーも作成されることがわかります。テーブルのプロパティをマップします。これはすべて良いです。

しかし、私が見つけたのは、マッピング クラスが Entity Framework への参照に依存しているということです。通常、私が POCO クラスを作成するとき、それらは完全に永続性を無視します。つまり、そのプロジェクトには Entity Framework への参照がまったくありません。

あなたの考え?

ありがとう。

4

1 に答える 1

5

POCO クラスを 1 つのプロジェクトに保持しながら、マッピングを別のプロジェクトに保持できます。POCO クラスがあるプロジェクトへの参照を追加するだけです。もう 1 つの方法は、データ アクセス レイヤーを作成し、そこにマッピングを移動することです。このようにして、3 つのプロジェクトが作成されます。メイン MVC プロジェクト、モデル プロジェクト、およびマッピングと EntityFramework への参照を含むデータ アクセス レイヤー。

たとえば、ソリューションは次のようになります。

1. Web User Interface (MVC)
2. Business layer
3. Unit of Work/Repository
4. Data access layer (Mapping from EF Reverse Engineering)

4 つのプロジェクトはすべて、5 番目のプロジェクトであるドメイン モデル (EF リバース エンジニアリングのモデル) にアクセスできます。1 は 2 と通信し、2 は 3 と通信し、3 は 4 と通信します。これら 4 つすべてがドメイン モデルへの参照を持っているため、レイヤー間でドメイン モデル変換を行う必要はありません。

ところで、サービス層は無視しましたが、Web サービスや REST がある場合は、別のプロジェクトに適合させることができますが、詳細には入りません。

于 2012-12-21T09:58:31.933 に答える