1

私は数ヶ月前に完了したプロジェクトの技術文書に追いつく過程にあり、もう一つは仕上げに近づいています。私は両方でデータアクセス層を抽象化するためにリポジトリを使用し、作業中のWikiにパターンの要約を書いていました。リポジトリパターンの理解は?

この要約を書いているうちに、2回目に少し違ったアプローチをとったことが分かりました。

1つは明示的なメソッドを作業ユニットと結合し、UoWトラッキングの変更を伴う暗黙的な更新を使用しました。もう1つはSaveメソッドを持ち、新しいエントリを挿入し、既存のものを更新しました(UoWなし)。

どのアプローチをお勧めしますか?通常のCRUDシナリオを考えてみましょう。それぞれの責任はどこにあるべきですか?

答えて

3

私は、リポジトリがUnit of Work、キャッシング、またはその他の関連する概念を実装に使用する必要があると思います。私は、インターフェイスが手元のドメインモデルに合わせたデータストアに似ていることを好みます。これは簡単にNHibernateは、またはNHibernate.LinqとNHibernateは、または直接SQLライブラリ、あるいはXMLまたはフラットファイルストアのようなもので実現することができる

interface ICustomerRepository 
{ 
    Customer Load(int id); 
    IEnumerable<Customer> Search(CustomerQuery q); 
    void Save(Customer c); 
    void Delete(Customer c); 
} 

:顧客のリポジトリは、このようになりますように。可能であれば、私はリポジトリの外でトランザクションの概念を保持するか、よりグローバルな範囲で複数のリポジトリの操作を単一のトランザクションの一部にすることができます。

関連する問題