我正在使用实体框架4.1编写一个ASP.Net MVC 3 Web应用程序。我的作业单元课程与本优秀教程中描述的内容相同http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
然而,我并没有把我的UoW类注入到我的控制器中,而是在我的服务类中这样做,就像一样
public class ListService : IListService
{
private IUnitOfWork _uow;
public ListService(IUnitOfWork uow)
{
_uow = uow;
}
public IList<List> GetAllListTypes()
{
return _uow.Lists.Get().OrderBy(l => l.description).ToList();
}
}
我的作业单元课是这样的
public class UnitOfWork : IUnitOfWork, IDisposable
{
readonly LocumEntities _context = new LocumEntities();
private GenericRepository<List> _lists = null;
public IGenericRepository<List> Lists
{
get
{
if (_lists == null)
{
_lists = new GenericRepository<List>(_context);
}
return _lists;
}
}
public void Commit()
{
_context.SaveChanges();
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
这一切都很好。但是,您会注意到,我的UoW类中有一些方法可以处理DbContext。我希望在像上面提到的教程中那样完成每个业务事务后处理UoW类,他们通过在控制器中使用以下代码来完成
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
我试图修改这个方法并将其放在我的服务类中,但它不起作用,即UoW类中的dispose方法从未被称为
protected override void Dispose(bool disposing)
{
_uow.Dispose();
}
如果有人能告诉我如何处理我的UoW课程,我将不胜感激。
谢谢。
Folks
答案是,当我在IoC中使用Unity时,可以设置它来处理我的工作单元类。