使用UnitOfWork模式时的依赖注入

时间:2012-11-09 14:26:27

标签: inversion-of-control unit-of-work

我正试图了解一个基于UnitOfWork模式构建的现有系统。有很多存储库都在其构造函数中使用IUnitOfWork,因此服务层可以执行多个存储库调用,然后选择何时提交更改。

当前的服务代码可能如下所示:

using (var uow = UnitOfWork.Start())
{
    var orderRepository = new OrderRepository(uow);
    var productRepository = new ProductRepository(uow);
    orderRepository.DoSomething();
    productRepository.DoSomethingElse();
    uow.Persist();
}

如何在服务层中引入真正的依赖注入,并仍然保留UnitOfWork模式?

1 个答案:

答案 0 :(得分:0)

我会使用工厂模式。在构造函数中注入工厂并重写:

using (var uow = this.unitOfWorkFactory.Create().Start())
{
    var orderRepository = new OrderRepository(uow);
    var productRepository = new ProductRepository(uow);
    orderRepository.DoSomething();
    productRepository.DoSomethingElse();
    uow.Persist();
}

祝你好运