ASP.Net MVC 3工作单元处理



我正在使用实体框架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时,可以设置它来处理我的工作单元类。

最新更新