4

私の最初の ASP.NET MVC アプリケーションでは、モデルはテーブルとクラスの間の単純な O/R マッピングであり、Entity Framework によって管理されていました。

ここで、このスケルトンに肉付けを追加し、生成されたクラスのビジネス メソッドを導入したいと思います。ASP.NET MVC (Entity Framework を使用) でこれに推奨されるアプローチは何ですか? 私のお気に入りは、同じドメイン ロジックをデスクトップ クライアントでも再利用できるように、ASP.NET MVC 参照なしでサービス層でも使用できるソリューションです。

技術的には、O/R クラスを更新する必要がある場合でも、追加のビジネス ロジックを保持する方法で、生成されたクラスを拡張できるはずだと思います。(ただし、これはEntity Frameworkに関連する質問です。)

編集: 貢献と、Entity Framework (4.0) の次のバージョンに関する情報に感謝します。2 セットのクラスを作成します。1 つは永続レイヤーのデータを表すために自動生成され、もう 1 つは実際のビジネス ロジック用です。

4

4 に答える 4

4

MVC.Net内では、モデルは最も明確に定義されていない部分です。私の意見では、それは基本的にアプリケーションの残りの部分です(つまり、ビューまたはコントローラーに関連しないもの)。アプリケーションのO/Rマッピング部分も、おそらく「モデル」の外側にあるはずです。これは、より多くのデータ層であるためです。モデルは、実際にビジネスオブジェクトを処理し、ビューに渡すデータのビューを作成する必要があります。

これについてはさまざまな意見がありますが、MVC.Netを従来のMVCアーキテクチャとは考えない方がよいと思います。

于 2009-08-19T12:58:57.767 に答える
1

ビジネスレイヤーを別のプロジェクトに抽象化し、構造マップなどを使用してそのインスタンスをMVCコントローラーに渡します。次に、コントローラーからこのビジネスレイヤーを呼び出して、ビジネスエンティティ(モデル)を取得し、それらをUIに渡すことができます。これにより、デスクトップアプリケーションでビジネスレイヤーを再利用できるようになります。

于 2009-08-19T13:05:25.050 に答える
1

現在 EF v1.0 を使用している場合、Entity Framework はアプリケーションに非常に干渉します。つまり、POCO を簡単に作成することはできません。モデルを拡張する方法は、部分クラスを使用することです。したがって、モデルを更新しても、行った部分クラスは引き続き有効です。Entity Framework チームはこれが問題であることを認識しており、次のバージョン (EF V4.0) でこれを改善しました。

NHibernate はより使いやすく、ビジネス ロジックを簡単に拡張できます。

Jeremy D. Miller によるこのブログ投稿は、問題を指摘するのに非常に優れていると思います。

于 2009-08-19T19:10:23.740 に答える
0

このプロジェクトには、肉だけでなく、服やスタイルを追加して、シックに見せることもできます。それはあなたがプロジェクトのために持っている時間に依存します。時間があれば、TDDと、Castle、NUnit、MoqなどのTDDで使用できるフレームワークを確認することをお勧めします。

おっしゃるように、サービスレイヤーはどのプロジェクトにも必須ですが、これらの種類のフレームワークを使用すると、アーキテクチャをより堅牢に設計できます。

于 2009-08-19T13:03:01.400 に答える