以下是方案。我有一個WCF服務,當這個服務被調用時,它將控制權傳遞給另一個類的實例(通過Ninject創建)。在那個類中,我需要做一些工作,特別是實體框架和存儲庫。簡而言之,我已經聲明瞭以下綁定。Ninject不在WCF中使用構造函數參數創建新實例
Bind<IGenericProductRepository>()
.To<GenericProductRepository>()
.WithConstructorArgument("context", new StagingDataContext());
當我想要使用這個存儲庫我有以下。
using (var genericProductRepository = IoC.Resolve<IGenericProductRepository>())
的問題是,我只得到genericProductRepository的新實例,如果它是一個全新的請求時,如果該方法是在相同的請求多次調用我得到一個錯誤,指出上下文(EF上下文)已經處理完畢,這是因爲它看起來像我得到了已經在using語句中處理的相同實例。用另一種方式解釋它,使用Microsoft WCF Test Client,如果我第一次調用它,代碼運行良好,如果再次推送調用按鈕(不重新啓動測試客戶端,即相同的請求),則會引發此錯誤關於它已被處置。
我嘗試過使用Ninject附帶的各種「範圍」,但顯然我錯過了一些東西。
所以我的基本問題是,如何獲得一個新的存儲庫,只要它擊中該行,而不是使用同一個?幫助將不勝感激,我真的試圖推動我的公司採用Ninject並放棄春季。