UoW зависит от домена. У меня была более или менее та же самая реализация, которую вы используете, пока кто-то не указал на это, поскольку доступ к базе данных не должен действительно влиять на ваш домен.
Так что я в итоге разделил обязанности. Поскольку мой UoW использует репозитории, которые требуют подключения к базе данных, мне все равно требуется подключение.
Так что для случаев, когда мне не требуется UoW, у меня будет это:
using (DatabaseConnectionFactory.Create()) { ... }
Для транзакции:
using (var connection = DatabaseConnectionFactory.Create().BeginTransaction())
{
// do stuff
connection.CommitTransaction();
}
Если мне требуется UoW (обычно с транзакцией ):
using (var connection = DatabaseConnectionFactory.Create().BeginTransaction())
using (var uow = UnitOfWorkFactory.Create())
{
// do stuff
connection.CommitTransaction();
}
НТН