为什么 Dapper dot net 不自行打开和关闭连接?

2024-01-16

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

我问这个问题是因为我和一位同事一直在反复探讨连接池幕后发生的事情的本质,以及在多个命令中保持连接打开或打开和关闭连接是否有任何好处对于每个命令。


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


原始(过时)答案:

你没有错。我没有注意到这种不便的原因是,由于遗留原因(具体来说:我们过去专门使用 LINQ-to-SQL),我们主要的类似连接的东西是DataContext- 所以我们将简洁的方法重新公开为扩展方法DataContext.

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

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

这里 EnsureOpen 是一个厚颜无耻的方法:

  • 如果连接打开,则返回 null
  • 否则,它打开连接,并返回一个 IDisposable 令牌,完成后关闭连接

所以:我们明显感觉到exactly你的痛苦,但我们将它进一步实现了。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Dapper dot net 不自行打开和关闭连接? 的相关文章

随机推荐

  • Laravel Blade 模板在尝试获取非对象的属性时如何返回 null 而不是 ErrorException

    我正在编写一些 Laravel Blade 模板 并且我的模型可能包含空对象 我非常想尝试获取对象属性 如果出现错误 则返回 null 所以不必这样写 if model gt child object that may be null mo
  • 如何链接相同或不同文件夹中的html页面?

    如果 html 页面位于相同或不同的文件夹中 而无需编写完整路径 如何链接到它们 在同一文件夹中 只需使用文件名 a href thefile html my link a 在父文件夹的目录中 a href thefile html my
  • python 中的迭代

    您好 我想创建一些代码来打印一个如下所示的框 代码应该使用循环来打印一行框 使用 for i in range 5 不应该使用 IF 语句来解决这个问题 只使用一个框 如下所示 我尝试使用下面的代码 但没有产生所需的输出 请帮忙 for i
  • Firebase:自动创建/更新多个子节点

    假设我有一个带有 用户 节点和 宠物 节点的项目 当用户获得宠物时 我想将宠物的密钥添加到用户的 pets 节点 并将用户 ID 添加到宠物的 owner 节点 Example users user1 pets pet1 true pet3
  • 在 Xcode 11 中将分支合并到 master 中?

    我一定在这里遗漏了一些非常简单的东西 在早期版本的 Xcode 上 我从未遇到过将分支合并到 master 中的问题 但在使用 Xcode 11 时 我在任何项目上都没有该选项 我应该如何合并到master 谢谢 这是一个令人沮丧的 Xco
  • 使用 C# 从 Parquet 文件中读取前 100 行

    我有这些巨大的镶木地板文件 存储在一个 blob 中 有超过 60 万行 我想检索前 100 个 以便我可以将它们发送到我的客户端应用程序 这是我现在用于此功能的代码 private async Task lt Table gt getPa
  • 如何查找 Ruby 哈希的“nil”值并将其替换为“None”或 0?

    我试图深入到数组嵌套哈希迭代中的每个值并替换所有值nil值带有 无 或 0 之类的值 请参阅我的代码 它显然不起作用 在将其传递到 Rails 中的视图进行迭代和渲染之前 我需要修复此问题 我的控制器 def show results Re
  • SECURITY_ERR:调用 Canvas 的 toDataURL 方法时出现 DOM 异常 18

    当我尝试从在 Internet Explorer 和 Safari 浏览器上绘制 SVG 图像的画布检索数据 URL 时 出现以下错误 而其他浏览器都正常工作 此外 SVG 图像还包含一些
  • 使用sequelize的种子数据的不同目录

    我希望在开发和生产之间有不同的种子数据 我如何在配置中指定它 我知道在 sequelizerc我可以加载动态配置文件并指定seeders path sequelizerc const path require path module exp
  • C 中的库存程序。需要有关如何从库存中删除项目的帮助

    这是一个保存库存的程序 该程序显示一个选项菜单 除了删除条目功能之外 其他一切都很完美 我不知道如何让它删除一个功能 我放置了一个变量来查找位置 但我真的不知道如何 我输入要删除的项目名称 然后输入显示条目 它会陷入无限混乱 有人帮助我如何
  • 使用 torchtext 时出现 ImportError

    当我尝试运行这行代码时 出现以下错误 from torchtext data import Field TabularDataset BucketIterator Iterator ImportError cannot import nam
  • Gradle从哪个版本开始支持Java 17

    当尝试配置项目时 我收到错误 不支持 Java 您的构建当前配置为使用 Java 17 0 1 和 Gradle 7 0 不幸的是 没有信息官方文档 https docs gradle org current userguide compa
  • CAtlList::RemoveAt 是否会使现有的 POSITIONS 无效?

    我正在看这个 其中 m Rows 是 CAtlList void CData RemoveAll size t cItems m Rows GetCount POSITION Pos m Rows GetHeadPosition while
  • 如何按特定顺序自动启动程序?

    我的 i3 配置文件中有以下几行 Startup applications exec firefox exec gnome terminal exec nautilus 这些行按预期启动 firefox gnome terminal 和 n
  • Erlang 和带有西里尔字母的二进制

    我需要能够使用其中包含西里尔字符的二进制文件 我尝试只写 lt lt gt gt 但我收到了 badarg 错误 如何在 Erlang 中使用西里尔字母 或 unicode 字符串 如果你想输入上面的表达式erlang shell 请阅读u
  • 使用基于单选按钮值的 javascript(Node JS) 将数据插入 mysql(Sequelize)

    我有下面的 json 对象 phoneno field1 Mohamed field2 123456789 field3 Sameer field1 Ganesh field2 987654321 field3 Pandiyan sende
  • “现代”正则表达式的识别能力

    真正的现代正则表达式实际上可以识别哪一类语言 每当存在带有反向引用的无限长度捕获组时 例如 1 正则表达式现在匹配非常规语言 但这本身并不足以匹配类似的东西S S 匹配括号对的上下文无关语言 递归正则表达式 这对我来说是新的 但我确信 Pe
  • 如何为 NDK 工具链的 gcc 包含

    首先 我上次尝试将c程序编译到linux arm架构时遇到了一个问题 以便稍后在android应用程序中使用它 我成功地做到了这一点 稍后我将写一篇关于如何使用 NDK 独立工具链的文章 现在我终于开始工作了 我正在尝试编译一个 c 文件
  • 画半条无限直线?

    我使用 pyqtgraph 进行数据采集 并且必须在图形视图上表示一些阈值 例如表示高电压限制等 我使用了该类InfiniteLine来自 pyqtgraph 但现在 我必须考虑在采集过程中阈值可能发生的一些变化 它看起来像是两条无限线之间
  • 为什么 Dapper dot net 不自行打开和关闭连接?

    Dapper 隐式地期望连接在使用时打开 为什么它不自己打开和关闭 这不是简单的连接管理吗 我问这个问题是因为我和一位同事一直在反复探讨连接池幕后发生的事情的本质 以及在多个命令中保持连接打开或打开和关闭连接是否有任何好处对于每个命令 Da