.net - 为什么 Dapper dot net 不打开和关闭连接本身?

标签 .net connection-pooling sqlconnection dapper

Dapper 隐式地期望连接在使用时打开。为什么它不自己打开和关闭?这不是简单的连接管理吗?

我问是因为我和一个同事一直在讨论连接池幕后发生的事情的性质,以及在多个命令之间保持连接打开或打开和关闭它是否有任何好处对于每个命令。

最佳答案

Dapper 现在(并且在相当长的一段时间内)在内部处理这个问题。它只是有效™

原始(过时)答案:

你没有错。我没有注意到这种不便的原因是由于遗留原因(特别是:我们曾经专门使用 LINQ-to-SQL)我们主要的类似连接的东西是 DataContext - 所以我们在 DataContext 上重新公开了 dapper 方法作为扩展方法.

愚蠢的是:这些方法的作用是:

using(db.Connection.EnsureOpen()) {
    db.Connection.{the dapper method}
}

在这里,EnsureOpen 是一个厚脸皮的方法:
  • 如果连接打开,则返回 null
  • 否则,它打开连接,并返回一个 IDisposable token ,完成后关闭连接

  • 所以:我们显然感受到了你的痛苦,但我们在更上层实现了它。

    请将此记录为功能请求。我们拥有所有代码(尽管我需要稍微调整它以适合非缓冲数据的“阅读器”)- dapper 绝对没有理由不能拥有它。

    关于.net - 为什么 Dapper dot net 不打开和关闭连接本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628983/

    相关文章:

    c# - 尝试将具体对象转换为通用接口(interface)时出现“InvalidCastException”

    .net - F# 的 FSharp.Core.optdata 和 FSharp.Core.sigdata 文件是什么?

    c# - 谁应该负责膨胀数据对象?

    java - 如何使用 BoneCP 记录连接池数据

    .net-core - 如何使用 dotnet Standard 访问 Azure Function App ConnectionString

    SQL Server 2008R2 SSRS报告无法连接到数据源: Cannot create a connection to data source

    c# - GetHashCode 在 .NET 中的 IEqualityComparer<T> 中的作用是什么?

    java - Tomcat 7 session 超时但 postgres sql 连接保持 Activity 状态

    tomcat - 我应该使用可扩展应用程序将 tomcat 池的 JDBC 驱动程序放置在 openshift 下的什么位置?

    c# - 内连接后数据库表不显示数据