我正在使用实体框架,并且正在尝试结合存储库模式来学习工作单元模式。
从我到现在的理解,工作单元负责跟踪对实体对象所做的更改。但是,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();
}
这是将工作单元与实体框架一起使用的正确方法吗?