4

私はリポジトリと作業単位をプロジェクトに統合するための「正しい」方法を探していましたが、さまざまなバリエーションにまたがって実行し続けています。uowオブジェクトのメンバーとしてリポジトリを持っているものもあります。他には、IUnitOfWorkインターフェースを実装するリポジトリがあります。uowオブジェクトがコンストラクターへの引数としてリポジトリーに渡されるところを見てきました。

他の方法よりも一方向にそれを行うことに何か利点はありますか?コンセンサスがある場合、それは何ですか?

4

3 に答える 3

3

そこにコンセンサスがあるとは言えませんが、このトピックについて多くの建築家と話をしたことに加えて、私はかなりの時間を費やしてこの問題を評価してきました. 私が思いついたのは、オブジェクト管理 (リポジトリ) とトランザクション (UnitOfWork) を疎結合し、互いに独立させたいということです。リポジトリは、トランザクションを使用せずに実行できる必要があり、その逆も同様です。リポジトリとの関係に関して言えば、Unit of Work は実際には単なるトランザクションのラッパーです。あなたの場合、おそらく TransactionScope 実装を使用して EF2 リポジトリ操作をラップします。このフレームワークでは、トランザクション管理を DataServices 名前空間/プロジェクトに配置し、ベース リポジトリ クラスを ObjectAccess 名前空間/プロジェクトに配置しました。そこから、リポジトリ操作と作業単位操作の両方の EF2 実装を作成しました。ソースを示すことはできませんが、基本的に私が行ったことは次のとおりです。

  • NCommon 1.1 Beta を出発点として使用: NCommon
  • NCommon のリポジトリ操作から作業単位を切り離しました
  • 次に、ObjectContext をどのように管理する必要があるかについて説明しました。

このフレームワークの最初の安定版をリリースしようとしています。幸運を!

于 2011-01-04T23:36:51.547 に答える
2

次のページを考えると、MS コンセンサスはリポジトリを公開する UnitOfWork であると言えます。

http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

http://msdn.microsoft.com/en-us/library/ff714955.aspx

どちらも、1 人の単純化されたブログ投稿の例ではなく、MS のガイダンスのようです。

于 2011-11-02T16:04:47.643 に答える
0

それを行う「正しい」方法はありません。状況に適した実装を見つけて使用してください。私は個人的に物事をシンプルに保つのが好きなので、通常はすべてのプロジェクトで汎用リポジトリを使用します (UoW インターフェース/パターンはまったくありません)。

于 2011-01-04T23:18:56.127 に答える