Servicestack ORM db.Close() 不终止连接进程

Servicestack ORM db.Close() does not terminate the connection process

我有一个代码演示了与 ServiceStack ORM

的简单 mysql 数据库连接
var dbFactory = new OrmLiteConnectionFactory(DB_CONNECTION_STRING, MySqlDialect.Provider);
var db = dbFactory.Open();
Console.WriteLine(db.State.ToString());
db.Close();
db.Dispose();

结果

Open

但是当我点击 SQL 命令时

show full processlist;
Id          User    Host                  db       Command  Time    State   Info    Rows_sent   Rows_examined
81107052    user1   <111.21.96.32>:51120  my_db    Sleep    7       NULL    0   0
81107178    user1   localhost             my_db    Query    0       init    show full processlist   0   0
81107179    user1   localhost             my_db    Sleep    0       NULL    0   0

id 为 81107052 的进程是开始执行代码的进程,但是进入睡眠状态并且不会被 db.Close() 终止; 这会触发 <max_connections_reached> 并行应用程序使用错误。

那么如何关闭连接进程呢?

只需使用 using 语句,即:

using (var db = dbFactory.Open())
{
}

一些 RDBMS 提供程序将 return 连接到池而不是将其关闭,但如果正确处理所有连接,您将不会收到太多打开的连接错误。

需要在连接字符串中添加Pooling=false