如何使用Dapper获取SqlDataReader?

16

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

我想创建自己的SqlHelper,它使用Dapper作为底层组件。那么,我如何从Dapper获取SqlDataReader


我不是 Dapper 专家,但 Dapper 是为在对象层面(它是微型 ORM)上工作而创建的,不用担心通常的 ADO.NET 东西,包括 SqlDataReader。 - reptildarat
1
@reptildarat,我知道。但是我有我的理由需要这个。 - Imran Qadir Baksh - Baloch
1个回答

27

有一个ExecuteReader方法,它会返回连接生成的数据读取器,如果你知道它实际上是一个SqlDataReader,你可以将其强制转换。在这种情况下,Dapper只处理参数和文字注入。

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

然而,我非常想知道您希望SqlHelper做什么,而Dapper尚未做到(但更好)。真诚的问题:我喜欢改进库。如果有缺口,请告诉我。


1
谢谢。还有ExecuteReaderAsync吗? - Imran Qadir Baksh - Baloch
1
@user 是的 - 在.NET 4.5版本中。 - Marc Gravell
1
@user 我对此很熟悉;我只是好奇是否遗漏了一些重要的功能集。听起来好像不是这样... - Marc Gravell
2
@user960567 做到这一点的方法是编写一个实现ICustomParameters或ICustomParameter接口的类 - 并进行包装。它应该可以正常工作。我现在不在电脑旁,但如果您需要后续添加示例,请告诉我。Dapper与TVPs很好地配合使用。 - Marc Gravell
1
@MarcGravell,这在Dapper 2.0.4中出现了问题,在1.60.6中您可以将其转换为SqlDataReader,但现在失败了。 :( 需要使用DbDataReader - Phill
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接