首頁 >後端開發 >C++ >Ninject 和 DbContext:確保正確處置並最佳化實例建立?

Ninject 和 DbContext:確保正確處置並最佳化實例建立?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 21:36:091044瀏覽

Ninject and DbContext: Ensuring Proper Disposal and Optimizing Instance Creation?

使用Ninject 時要記住什麼

最近採取的步驟將Ninject 合併到MVC 應用程式中並將DbContext 引入到控制器的建構子中,自然會出現某些問題出現:

Ninject 是否保證清理並及時處置我的DbContext實例?

正如此響應中所述:

根據 CLR 文檔,Disposable 對象的創建者負責調用 Dispose,在本例中為 Ninject。因此,不鼓勵顯式呼叫 Dispose。

一旦 GC 收集到它們所綁定的範圍對象,Ninject 就會在 InTransientScope() 之外的任何範圍內處置 Disposable 對象。因此,所有 Disposable 物件都應使用不是 InTransientScope() 的範圍進行綁定。

消除在每個控制器中包含 DbContext 參數的要求是否可行?

完全避免使用 MVC 控制器的共用基底類別。類別繼承促進了緊密耦合並妨礙了可維護性。此外,它往往會創建“上帝對象”,從而需要每個控制器進一步依賴。

或者,考慮利用全域註冊的過濾器來處理橫切關注點。您可以為不同的邏輯元件設計特定的篩選器,遵守單一職責原則,共用基底類別會違反此原則。透過全域註冊它們,您可以使用建構函式註入,甚至可以為控制器和/或操作層級的條件應用程式建立屬性(無行為)。

如何最佳化 DbContext 實例的建立?

請參閱以下問題以取得見解:[每個 Web 請求一個 DbContext...為什麼? ](https://stackoverflow.com/questions/9155198/one-dbcontext-per-web-request-why)

以上是Ninject 和 DbContext:確保正確處置並最佳化實例建立?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn