2016-03-21 89 views
0

我正在使用UnitOfWork模式指南和EntityFramework處理.net Web應用程序。Context.ChangeTracker.Entries()拋出InvalidOperationException

Context.ChangeTracker.Entries()方法拋出InvalidOperatioException異常。

消息:「IEntityChangeTracker的多個實例無法引用實體對象。」

該代碼太大,涉及多個圖層,因此無法在此處粘貼代碼。

由於我使用UnitOfWork模式,我非常確定,我只在單個上下文實例上工作。在這種情況下,我們是否會得到這個錯誤,並且有什麼方法可以找出導致此問題的實體?

+0

*我非常確定我只在一個上下文實例上工作*好吧,我從來沒有見過上下文來更改跟蹤器...... –

回答

1

如果您使用的是依賴注入器,那麼在您的配置中,請您的DI容器或工廠爲每個請求創建一個實例,以確保其創建的DbContext的單個實例。

+0

我將工作單元傳遞給服務,該服務適用於unitOfWork內部的上下文,並將相同的unitOfWork傳遞給後續的圖層/方法。 – DivideByzero

+0

那麼什麼是負責創建實體框架dbcontext的實例?從錯誤信息中清楚地看到,有些其他實例已經創建了一些你可能不知道的實例,因爲你有一個龐大的代碼庫,這就是爲什麼你需要一個依賴注入器,如果你沒有一個 –

相關問題