Dapper.NET连接/查询最佳实践

RPM*_*984 10 .net c# sql-server asp.net dapper

所以我已经阅读了一堆链接/ SO问题,但我仍然无法得到明确的答案.

在ASP.NET应用程序中使用Dapper执行SQL查询时,打开/关闭连接的最佳做法是什么?

这是我目前正在遵循的模式:

using (var db = new SqlConnection(_connectionString))
{
    return db.Query("dbo.SomeQuery");
}
Run Code Online (Sandbox Code Playgroud)

基本上,每次根据需要打开/关闭SQL连接.

根据我的理解,上面的代码应该自动打开/关闭SQL连接(例如我不需要明确做db.Open或者db.Close).

我看到的问题是,过了一段时间,我得到了一堆这些错误:

InvalidOperationExceptionTimeout已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.

在这段时间里我有一个SQL分析器跟踪,我没有看到任何会阻塞任何内容的长查询,所以看起来好像我的ASP.NET Web应用程序没有连接(而不是花费太长时间)执行查询).

有人能告诉我我做错了什么吗?

旁注:我的应用程序是作为Azure Web App运行的,所以很遗憾我实际上无法看到Web应用程序正在打开多少个连接.:(

小智 -3

根据我的观点,使用语句关闭您的连接,但您明确告诉打开一个连接,如下所示:

using (var db = new SqlConnection(_connectionString))

{
       db.open();

    return db.Query("dbo.SomeQuery");
}
Run Code Online (Sandbox Code Playgroud)