2011-09-12 24 views
1

MVCパターンでは、モデルに属するもの、具体的にはMVC3のModelsフォルダの内容とリポジトリやオブジェクトの関係を明確にしたいと思います。MVC - モデル、オブジェクト、リポジトリの違い

  1. 自分のアプリケーション内のすべてのコアオブジェクトに関する情報を保持している「オブジェクト」と呼ばれるプロジェクト:

    は今のところ、私の現在のMVC3ソリューションでは、私が4つのプロジェクトを持っています。

  2. データコンテキストに関する情報情報と、各オブジェクト(MVC3足場を使用して作成)のリポジトリを保持するプロジェクト
  3. Webプロジェクトは、コントローラ、ビュー、およびこの質問 - モデル
  4. Aユニットテストプロジェクト

私は本当にについての説明を取得したいと思い、何がWebプロジェクトのモデルフォルダに何が起こるのか対オブジェクトのプロジェクトに行くべきかとの間の差であります。今は、「View Models」と呼ばれるものを保持するためにModelsフォルダのみを使用しています。これは通常、コアオブジェクトの組み合わせを含んでいます。このフォルダ内のファイルには、モデルの内容を定義する定義のみが含まれているか、コントローラが呼び出すことができる他のコードが含まれている必要がありますか?

コントローラとリポジトリの両方をかなりよく理解していると思いますが、特定のコードがどちらか一方になるかどうか混乱することがあります。コントローラーに絶対に入るべきではないものの、代わりにリポジトリーまたはモデルのどちらかに入るべきであるかについての特定のガイドラインや制限事項はありますか?

いつものように。

+0

私は自分のビューモデルをViewModelsフォルダツリーに入れ、Entity Frameworkによって生成されたモデルをモデルフォルダツリーに入れました。私は他の人には他のアプローチがあると思う。概念的には、EFを使用して、コントローラがDBコンテキストを処理し、 'context.whatever.Add(myThing)'を呼び出し、 'context.SwhichChanges()'を呼び出すという習慣を得ました。方法。 – itsmatt

答えて

1

オブジェクトとデータがすべてのプロジェクトで参照されるコアライブラリに結合されている点を除いて、私たちは非常に似ています。 MVCプロジェクトのモデルフォルダは厳密にビューモデルです。

コントローラに追加のクラスが必要な場合は、実際にどこに行く必要があるかによって異なります。私は通常、HtmlHelpers、Attributes、Filtersのサブフォルダを含むHelpersフォルダを含めます。 MVCプロジェクト(すべてのプロジェクトで使用される共通クラス)の外に存在することが理にかなっている依存関係であれば、コアに追加します。

関連する問題