2

ASP.NET MVC プロジェクトに取り組んでいます。私のソリューションには、次のプロジェクトがあります: BlogApp.Web (ASP.NET MVC アプリ)、BlogApp.Data (クラス ライブラリ)

データアクセスレイヤーを実装する方法を考えています。EntityFramework Code First アプローチを使用したい。リポジトリのパターンを考えていたのですが、これは本当に必要なのでしょうか? これは、ORM の上にある次のレイヤーにすぎないことを読みましたが、これは実際には必要ありません。したがって、次のようなメソッドを書く代わりに:

GetAllPosts(Tag t) {
    db.Posts.Where(p => p.Tags.Contains(t)).Skip(x).Take(y).Select(p => p);
}

コントローラーで db コンテキストを作成し、同じクエリを作成しますか? ページングを実装したり、モデルのラッパーを作成したりする必要はありません。

4

2 に答える 2

2

リポジトリ パターンについて聞いたことがあるかもしれませんが、一部の陣営では支持されなくなっているということです。たとえば、Jimmy Bogard のブログを参照してください。これは、アプリケーションが非常に単純でない限り、クエリをコントローラに直接記述する必要があるという意味ではありません。

前述のように、クエリは、コントローラーが使用できる 1 つの場所にのみ記述する必要があります。これは、Repository メソッドまたは専用のクエリ オブジェクトのいずれかであり、どちらもより優れた抽象化を提供し、重複を回避します。

簡単に言えば、あなたのアプリケーションは、データアクセスレイヤー用に別のアセンブリを必要とする複数のフロントエンドを持つことを意図していますか? そうでない場合は、2 つのアセンブリをマージし、名前空間だけを使用して整理することを検討してください。

于 2013-06-25T08:52:14.930 に答える