我試圖讓團結依賴注入與利用實體框架WCF服務工作,但我越來越感到困惑的使用情境和存儲庫的。使用依賴注入WCF服務方法和EF
我設計它的方式是擁有一些存儲庫類,例如UserRepository,MessageRepository,LocationRepository,每個存儲庫接受一個EF DbContext對象作爲構造參數。這使我可以通過調用context.Save()或回滾等來控制上下文級別的工作單元來控制跨存儲庫的事務。
我在混亂的是,我不知道如何在依賴注入表示此。我想要兩個場景
a)當WCF服務通過WCF方法實例化時,我希望它使用我創建的DbContext類並創建存儲庫對象,傳遞創建的DbContext,它將連接到實體框架數據庫。
B)當WCF服務的方法是從一個單獨的測試項目進行測試,我想嘲笑資源庫對象返回嘲笑數據。
如果我只是使用存儲庫類,這將是相對簡單的,因爲在我可以調用Container.Resolve()的每個WCF服務方法中,然後我可以使用Unity WCF工廠來設置WCF實例的具體類型,在我的測試項目中爲模擬類型手動配置Unity容器。
但是,難點在於我的存儲庫需要一個DbContext類作爲構造函數參數傳遞,這個構造函數參數將在存儲庫的生命週期中生存,並且我還需要能夠在我的服務中引用它方法,例如
public bool CreateUser(DbUser user)
{
try
{
using (var context = new MyDbContext())
{
var repository = new UserDataRepository(context);
user.GenerateUserLight();
user.GenerateUserProfileLight();
var result = repository.InsertItem(user);
repository.Save();
return result;
}
}
catch (Exception ex)
{
return false;
}
}
我怎麼能適應使用統一依賴注入,所以我可以嘲笑它的測試項目上面的方法?