簡體   English   中英

單線程應用程序中的實體框架數據庫連接

[英]Entity Framework Database Connection in Single-Threaded Application

我有一個獨特的(或我認為)的問題-我們有一個使用MVC原理的ASP.NET Web應用程序。 該項目最多為單線程(我們的業務需要單點控制)。 我們正在使用實體框架連接到數據庫

問題:

我們希望查詢數據庫的頻率要低於每次頁面加載的頻率。

我曾考慮過將數據庫連接置於單一狀態,但擔心連接頻率太低-如果查詢在相當長的時間內連接仍然可以正常工作嗎? 您將如何建議連接到數據庫?

您將如何建議連接到數據庫?

不要使用共享連接。 連接不是線程安全的,並且由.NET池化,因此通常創建連接並不昂貴。

最佳實踐是為每個數據庫請求創建命令和連接。 如果您使用的是實體框架,那么這將為您解決。

如果您想使用內置的SessionCache屬性來緩存結果 ,那很好,但是不要緩存連接,EF上下文等一次性資源。

如果在某個時候發現存在與創建連接或上下文直接相關的可衡量的性能問題, 可以嘗試進行處理,但不要嘗試優化甚至可能不是問題的內容。

如果要在不連接數據庫的情況下獲取數據,則需要對其進行緩存-在內存,文件或所需的任何存儲方式中進行緩存,但需要以某種方式將其保留在數據庫的前面。 我沒有其他辦法。

如果通過連接意味着在數據庫上建立一個全新的SqlConnection,那么您可以依靠連接池(EF足夠聰明,即使完成您的業務后也可以保持幾分鍾的連接狀態),也可以只創建連接並保持連接狀態。通過不立即關閉它們(即在結構內跟蹤它們),它們可以在您的應用程序中保持活動狀態。

但是您絕對應該考慮這是否真的是您想要的。 在大多數情況下,EF內部執行的方式正是您想要的。

進一步閱讀: https : //docs.microsoft.com/zh-cn/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-和單元的功圖案-在-AN-ASP-凈-MVC的應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM