リポジトリパターンの例をたくさん見つけました。それらはすべて、リポジトリが独自の接続ライフサイクルを管理していることを示しています。複数のリポジトリ間で単一の接続を共有したい場合、人々はどのように対処するのだろうかと思いました。
私が尋ねている主な理由は、TransactionScopeを使用してトランザクションを作成するときに、DTCトランザクションにエスカレートしたくないからです。セットアップは簡単ですが、少し重いようです。
私が考えていたのは、接続のライフサイクルを管理するTransactionScopeに似たものを使用することでした。ただし、データアクセスをビジネスプロセスに少しリンクしているようです。私が言っていることの例は次のとおりです。
//As DataScope will handle connections, then repositories will be created from them
//in order to share the connection.
using(DataScope scope = new DataScope())
{
scope.GetRepository<CustomerRepository>.FindById(10)
}