我使用AutoFac作爲IoC在需要它的控制器內部注入ObjectContext。使用AutoFac和MVC3的ObjectContext行爲
ObjectContext使用InstancePerLifetimeScope
在AutoFac中註冊,並且我創建了一個自定義Controller工廠,該工廠從DI容器中解析正確的控制器,從而獲得注入的ObjectContext。
當我請求一個頁面時,一切看起來都很好,而且數據是按照預期使用EF4從數據庫中獲取的。
行爲我想知道的是,我啓動了Web應用程序後,手動刪除或從數據庫中添加了一些條目,這些更改不會反映在我的Web應用程序中。我在數據庫中有10條記錄,刪除了5條,但仍然有10條記錄被EF提取。我認爲,當我在AutoFac中註冊ObjectContext時,會發現InstancePerLifetimeScope
這意味着每個Web請求都創建一個新的ObjectContext。
現在看來,如果我沒有誤解EF如何緩存某些內容,那麼在任何時候都會使用相同的ObjectContext。
除了沒有看到我從其他應用程序對數據庫所做的更改之外,我想這會在連接到站點的所有用戶使用相同的ObjectContext時導致生產中的問題,因爲ObjectContext不是線程安全的。
任何人都知道我在哪裏出錯了嗎?
這似乎是在做伎倆:)非常感謝。 –