我正在使用实体框架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-applicationASP.Net MVC 3工作单元处理
然而,在这个优秀的教程中所描述的,而不是注入我的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类的正确方向指向我。
谢谢。
你正在创建什么样的服务?它是ASP.NET Web API,WCF,Windows服务,业务逻辑服务还是什么?处理您的服务曾被称为?谁负责处理你的服务? – 2012-03-28 13:12:39
@LadislavMrnka - Service类是我的业务逻辑的ASP.Net类设置,它位于我的服务层,它位于我的UI和我的Domain Model之间。我的服务类中没有处理方法。 – tgriffiths 2012-03-28 13:37:07
@tgriffiths - 您使用什么IoC容器进行依赖注入?他们大多数都能够处理他们创建的组件。 – 2012-03-28 13:46:07