【问题标题】:How to get SqlDataReader with Dapper?如何使用 Dapper 获取 SqlDataReader?
【发布时间】:2019-09-04 15:34:16
【问题描述】:

我有一个使用老式 SqlHelper 类的 Web 应用程序。

我想创建我的自定义 SqlHelper,它在下面使用 Dapper。那么,如何从 Dapper 获取SqlDataReader

【问题讨论】:

  • 我不是 dapper 专家,但创建 dapper 是为了在对象层(它是 Micro ORM)上工作,并不担心包括 SqlDataReader 在内的常见 ado.net 内容。
  • @reptildarat,我知道。但我需要这个是有原因的。

标签: ado.net dapper


【解决方案1】:

有一个ExecuteReader 方法可以将连接生成的数据读取器交还给您:如果您知道它实际上是SqlDataReader,则可以强制转换它。在这种情况下,dapper 只处理参数和字面量注入。

using(var reader = (DbDataReader)
    conn.ExecuteReader(sql, args))
{
    // use reader here
}

然而,我对您希望SqlHelper 做的事情非常感兴趣,而 dapper 还没有做(但更好)。真正的问题:我喜欢改进图书馆。如果有差距,请告诉我。

【讨论】:

  • 谢谢。还有 ExecuteReaderAsync 吗?
  • @user 是 - 在 .NET 4.5 构建中
  • @user 我很熟悉;我很好奇我是否只是省略了一些巨大的功能集。听起来不像……
  • @user960567 这样做的方法是编写一个实现 ICustomParameters 或 ICustomParameter 的类 - 并将其包装起来。它应该可以正常工作。我不在 PC 上,但如果您需要稍后添加示例,请告诉我。 Dapper 与 TVP 配合得很好。
  • @MarcGravell 这在 Dapper 2.0.4 中被破坏了,在 1.60.6 中你可以将它转换为 SqlDataReader,现在它失败了。 :( 需要使用DbDataReader
猜你喜欢
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2013-07-18
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多