Asp.net-Core

AddDbContext 或 AddDbContextPool

  • January 25, 2018

對於 Asp.net Core 應用程序,我們必須使用哪一個?AddDbContext還是AddDbContextPool?根據 EF Core 文件,AddDbContextPool提供高性能,但預設 Asp.net Core 項目模板使用AddDbContext.

答案在這裡(在“DbContext 池”下):https ://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling

DbContext不是執行緒安全的。所以你不能同時DbContext為多個查詢重用同一個對象(奇怪的事情發生了)。通常的解決方案是在DbContext每次需要時創建一個新對象。就是AddDbContext這樣。

DbContext但是,在先前的查詢已經完成後重用對象並沒有錯。就是AddDbContextPool這樣。它使多個DbContext對象保持活動狀態,並為您提供一個未使用的對象,而不是每次都創建一個新對象。

你使用哪一個取決於你。兩者都會起作用。池化有一些性能提升。但是文件警告說,如果您在DbContext類中使用不應在查詢之間共享的任何私有屬性,則不應使用它。我想這很罕見,所以在大多數情況下,池化應該是合適的。

引用自:https://stackoverflow.com/questions/48443567