2011-01-22 8 views
5

リポジトリパターンを適用する方法はたくさんあると思われます。なぜなら、あなたの意見と、リポジトリパターンを適用する最善の方法と思われるものに対する明確な答えが必要な理由があるからです。これは一般的なリポジトリですか?しかし、いくつかのドメインオブジェクトが他のドメインオブジェクトと同じ動作をしていないという問題があります。リポジトリを指定していますか?リポジトリ間のコードリピートはどうですか?それは両方のcombinaisonですか?両方の種類の実装にdiコンテナを使用するのはどうですか?最初にEF4コードでリポジトリクラスを作成するベストプラクティスは何ですか?

おかげ

編集:私は使用していますORMは、エンティティフレームワーク4 EF4との例を持っていいだろうです。

答えて

1

This post by Gabriel Schenkerは、リポジトリパターンの説明です。彼はそれをNHibernateで実装しています(使用しているORMについては言及していません)、汎用のベースリポジトリを提供します。私の場合、リポジトリのパターンはテストに非常に関連しており、それを偽装したり模倣することができます。このブログ記事では、自分の偽造方法を示しています。

私の経験では、ほとんどのリポジトリはいくつかの共通の機能を共有しています。 GetById、Add、Removeをクリックします。したがって、継承可能な基本クラスを持つと便利です。少し難解なところは、動的なLinqのクエリとそのテスト方法について考えるときです。

Linqのリポジトリパターンの例はherehereですが、これらはいくつかのプロジェクトでは過度の作業になる可能性があるため、簡単に開始できます。

+0

良い説明、動的linqクエリが使用される場合の例がありますか? – Rushino

+0

NHibernateでLinqを使う方法を示す2つのリンクを追加しました。 –

+0

申し訳ありません私はちょうど私がエンティティフレームワーク4を使用していたormを言っていないことに気付いた。ef4でいくつかの例がありますか – Rushino

3

リポジトリパターン自体は、仕様を必要とする分野ではかなり明示的です。残りは、プログラミング言語、プロジェクトのスコープ、独自のプログラミングスタイルなどの外部要因に依存するため、意図的に除外されています。

言い換えれば、パターンの適用方法を尋ねているようですが、最終的にはプログラミング時に自分で決定する必要があります。

私はしかし、あなたのより具体的な質問に返信しようとします:

  • はい、ジェネリックを使用してリポジトリのための良いアイデアです。もう1つのアプローチは、格納すべきすべてのオブジェクトに対して共通のインターフェースを持つことです。また、あなたの要件に応じて、両方とも一緒に行くこともできます。
  • 保存するオブジェクトのポリモーフィックメソッドを呼び出すことで、オブジェクトの動作の違いに対処してください。
  • (ジェネリックおよび/またはインターフェイスを使用して)正しい操作を行う場合は、コードを繰り返してはなりません。
関連する問題