2010-12-13 40 views
3

DDDパターンでは、作業単位をリポジトリと結合する必要がありますか?私はいくつかの異なる例を見てきました。作業単位のインターフェースを実装するリポジトリー、作業単位自体の振る舞いを実装するリポジトリー、作業単位を表すプロパティーを持つリポジトリーを含んでいます。 UoWの存続期間中の複数のリポジトリインスタンス。後者の場合、これはアンチパターンのようなものです。つまり、消費者がリポジトリインスタンス間でUoWのインスタンスを共有するために本当に知っていなければならないのでしょうか?カプセル化され、消費者にさらされてはいけませんか?リポジトリにUnitOfWorkを実装する必要がありますか?

私は、これらの異なるアプローチの利点について、またその理由をいくつか聞きたいと思います。

ありがとうございました。

答えて

2

これにはdiscussionがあります。

私は個人的にはagreeで、完全に避けるべきです。汎用リポジトリと同じです。

+0

したがって、サービスベースの戦略をリポジトリよりもサポートしていますか?すなわち、オペレーションレベルでのトランザクション:service.Save(オブジェクト)、(var repo = new Repo()){repo.Add(object); repo.Commit(); }? – Jeff

+0

@ JeffN825私は、集約根がトランザクション境界を定義すべきという考えをサポートしています。そうすれば、scopeは常に 'repository.Save()'メソッドとなり、作業単位は必要ありません。 –

関連する問題