1

我正在使用实体框架,并且正在尝试结合存储库模式来学习工作单元模式。

从我到现在的理解,工作单元负责跟踪对实体对象所做的更改。但是,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();
}

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

4

1 回答 1

0

是的,您共享相同的 DataContext。这是一个可以帮助您的教程: http ://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-在-an-asp-net-mvc-应用程序中

于 2012-11-05T12:29:10.580 回答