我从事 UnitOfWork/Repository/MVC 应用程序的工作。现在一切都很好,我想将 UnitOfWork 与 Controller 分离。一种方法是在 Controller 的构造函数中注入(inject) Ninject(或其他)的依赖项。但是,这意味着 UnitOfWork 将与 Controller 同时实例化。
我想要使用 UnitOfWork 的方式是像这样使用 block :
using(var unitOfWork = new IUnitOfWork)
{
return unitOfWork.GetRepository<IEmployeesRepository>().GetAllEmployees();
}
显然你不能实例化一个接口(interface),你有一个实例化的实现,它是用依赖注入(inject)器注入(inject)的,但是我如何将它注入(inject)到 using 子句中?
我看到了属性注入(inject)和方法注入(inject),但我不确定如何使用它们来实现我的目标。
最佳答案
使用您在容器中注册的工厂:
public class UserController : Controller
{
IUnitOfWorkFactory _factory;
public UserController(IUnitOfWorkFactory factory)
{
_factory = factory;
}
public ActionResult DoSomething()
{
using(var unitOfWork = _factory.Create())
{
return unitOfWork.GetRepository<IEmployeesRepository>().GetAllEmployees();
}
}
}
恕我直言,最好抽象出 UoW 处理:http://blog.gauffin.org/2012/06/how-to-handle-transactions-in-asp-net-mvc3/
关于asp.net-mvc - 在Using block 中注入(inject)UnitOfWork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160898/