您好。我正在使用以下架构开发ASP.NET MVC Web应用程序: UI - >控制器 - >服务层 - >库。这里的问题是在哪里公开工作单元模式。比如我有:
public class SomeController
{
public ActionResult AnAction()
{
using(var unitOfWork = UnitOfWorkManager.Create())
{
try
{
this.ServiceA.Foo();
this.ServiceB.Foo();
unitOfWork.Commit();
}
catch(Exception ex)
{
unitOfWork.Rollback();
}
}
}
}
控制器是否可以了解工作单元?如果我们有多次调用不同的服务但是在同一个操作方法中并且我们需要事务性行为会怎样?
答案 0 :(得分:4)
我们构建了一个具有相同架构的应用程序,我们的观点是UOW类仅在服务中使用。原因:
行动
public ActionResult List()
{
var things = ThingService.GetAll();
return View(things);
}
服务
public IEnumerable<Thing> GetAll()
{
using (ObjectContext context = new Container(ConnectionString))
{
var work = new UnitOfWork(context);
return work.Things.GetAll());
}
}
希望这有帮助