Я нашел множество примеров шаблона репозитория, каждый из которых показывает репозиторий, управляющий собственным жизненным циклом соединения. Мне было интересно, как люди справляются со случаем, когда они хотят использовать одно соединение для нескольких репозиториев?
Основная причина, по которой я спрашиваю, заключается в том, что когда я создаю транзакцию с помощью 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)
}