工作单元模式是否共享相同的DataContext?

时间:2012-11-05 12:25:06

标签: c# asp.net entity-framework ado.net unit-of-work

我正在使用Entity Framework,我正在尝试结合Repository模式学习Unit of Work模式。

从我理解到现在,工作单位负责跟踪对实体对象所做的更改。但是,DataContext不是在做同样的事情吗?

那么,实现工作单元模式并不像“强迫”你在所有方法中使用相同的上下文一样吗?

public class EFUnitOfWork : IUnitOfWork
{
    EFContext context = new EFContext();
    public void Commit()
    {
        context.SaveChanges();
    }
}

public class ProductsRepository(IUnitOfWork unitOfWork)
{
    /* CRUD methods here */
}

public void InsertProducts()
{
    var unitOfWork = new EFUnitOfWork(); // <-- this will normally be injected via constructor
    var productsRepository = new ProductsRepository(unitOfWork);

    productsRepository.Insert(new Product { Name = "Product 1", Description = "Description" });
    productsRepository.Insert(new Product { Name = "Product 2", Description = "Description" });
    productsRepository.Insert(new Product { Name = "Product 3", Description = "Description" });

    unitOfWork.Commit();
}

这是使用工作单元与实体框架的正确方法吗?

1 个答案:

答案 0 :(得分:0)