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