让我们假设下面的代码通过Unit Of Work模式从数据库中检索数据。 由于GetByID是常见操作,因此可以在Repository类中声明它。
UnitOfWork w = new UnitOfWork();
w.someRepository.GetByID(10);
如果我需要在10个单独的文件中调用GetByID方法,该怎么办?我应该每次都创建一个UnitOfWork类的实例并调用GetByID,或者下面的代码块是否对UnitOfWork模式有效?
public class SomeRepositoryProvider {
public tbl_somerepoclass GetByID(int id) {
UnitOfWork w = new UnitOfWork();
return w.someRepository.GetByID(10);
}
}
答案 0 :(得分:0)
通常,当您只想从数据库中检索数据时,您甚至不需要UnitOfWork。 UnitOfWork更像是db的事务 - 你试图一次性地将一些数据集持久保存到db - 如果每次运行都可以保存,如果没有,那么一切都是回滚。要按ID获取实体,您只需要存储库。我在实践中遇到的最佳解决方案是为每个实体准备Repository类并预先创建有用的方法。仅当您要保存数据时才使用UnitOfWork。所以一般情况下你应该像这样使用你的存储:
someRepository.GetById(10);
当您实例化Repository时,只需将操作所需的适当对象传递给其构造函数 - 如果是实体框架ver。 > 4.0 DbContext。
如果你想添加新实体,请使用它:
someRepository.Add(newEntity);
unitOfWork.Save();