我在EF的应用程序中使用了UnitOfWork和Repository模式。UnitOfWork +存储库模式和实体框架模拟
实际上,我的设计规定UnitOfWork将创建ObjectContext类并在Repository具体类中注入内容。例如:
UnitOfWork.cs(初始化)
public DefaultUnitOfWork() {
if (_context == null) {
_context = new MyDataContext(ConfigSingleton.GetInstance().ConnectionString);
}
}
UnitOfWork.cs(得到一个存储库实例)
public CustomerRepository Customers {
get {
if (_customers == null) {
_customers = new CustomerRepository(_context);
}
return _customers;
}
}
存储库类有一个已定义这样的ObjectContext类,他们可以使用它的方法来检索和更新数据。 这工作很好。
现在我需要执行我的查询模拟应用程序池标识,因此我决定将代码包装在模拟中的UnitOfWork构造函数中。
不幸的是,这不起作用,因为ObjectContext
然后传递给存储库构造函数,稍后在存储库的客户端调用时使用,例如FindAll()
。
我已经体会到,在通过实体框架进行查询之前就已经确定了与数据库的真正连接,而不是在我创建ObjectContext
本身时。
我该如何解决这个问题?