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

时间:2017-05-17 22:03:04

标签: servicestack ormlite-servicestack

我有一个代码,用于演示与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>错误。

那么如何关闭连接过程?

2 个答案:

答案 0 :(得分:1)

只需使用using语句,即:

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

某些RDBMS提供程序将返回与池的连接而不关闭它,但如果所有连接都已正确处理,则无法获得太多的打开连接错误。

答案 1 :(得分:0)

连接字符串

中需要添加Pooling=false