我在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
本身時。
我該如何解決這個問題?