これに関連する質問がいくつかありますが、探している答えがまだ見つからないので、質問を投稿しています。別の質問が答えを保持している場合(そして私はそれを見ていないだけです)、私にそれを指摘してください。
リポジトリパターンでEF4とUnityを使用しているときに、UnitOfWorkがどこに属しているか(具体的には作成されているか)を把握しようとしています。
基本的に、ビジネスロジックを実装するために使用されるサービスがあります。このサービスコンストラクターはリポジトリーを取り込むため、サービスは私のリポジトリーに注入されます。次に、サービスは挿入されたリポジトリを使用してデータストアに対してアクションを実行しますが、これらを作業単位でラップする必要があります。
ただし、私の作業単位には、EF4コンテキスト(または、私の場合は、コンテキストのインターフェイスであるIObjectContext)を注入する必要があります。そして、UoWをどこで作成し、コンテキストとともに挿入する必要があるのかわかりません。
これが私が考えることができる可能なオプションですが、どれも理想的ではないようです:
UoWをサービスコンストラクターに含めます。これにより、サービスが作業単位で注入され、作業単位がEF4コンテキストで注入されます。しかし、リポジトリのすべてのインスタンスでUoWを作成したくないので、これは間違っているようです。
container.Resolveを使用してオンデマンドで作成し、EF4コンテキストを挿入してUoWのインスタンスを取得します。これは、すでにUoWにアクセスできるのではなく、常にIoCコンテナにアクセスしなければならないという過剰なようです。
コンテキストをサービスに直接注入して、UoW(コンテキスト)を作成できるようにします。コンテキストをサービスに公開したので、これは悪いようです。これはリポジトリに分離する必要があります。
だから私の質問は、これらの方法の1つは受け入れられるのか、それとも私が考えていない別の方法があるのかということです。
前もって感謝します。