在ASP.NET Core中為每個SQL命令打開/關閉數據庫

asp.net-core c# entity-framework-core npgsql postgresql

我編寫簡單的ASP.NET核心應用程序,其中Controller注入MyService(配置為Scoped),然後注入MyDbContext。

在我的控制器的方法中,我有2個數據庫查詢,我的調試輸出如下所示:

 Executing action method...
 Opening connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
 ...
 Closing connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
 Opening connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
 ...
 Closing connection to database 'shell' on server 'tcp://127.0.0.1:5432'.
 Request finished in...

問題是:在每個請求上打開一個新連接是否正確甚至更多 - 為每個sql命令打開一個新連接?它不能建立與數據庫的連接一次並重用它。表現不是更好嗎?

PS:我使用PostgreSQL和npgsql提供程序

一般承認的答案

像其他人提到的那樣。連接池是你的朋友。

開啟和關閉完全沒問題。

https://stackoverflow.com/a/4439434/3799142


熱門答案

總是打開和關閉連接已經提到遍布SO連接池處理您的性能問題。

使您的代碼更易於閱讀,您永遠不必擔心,我必須打開哪個連接,它是否打開?是不是在其他地方關閉了?

正如你所問,我認為你真的不想。這就是我一般所做的。一個小的包裝器方法,可以解決你的sql命令。

static bool FireCommand(SqlCommand command)
{
    command.Connection.Open();
    command.ExecuteQuery();
    command.Connection.Close();
 }


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow