使用Dapper.NET在一次往返中使用多个SQL语句

ADO.NET中有一个很好的功能,允许您在一次往返中向数据库发送多个SQL语句,并接收所有语句的结果:

var command=newsqlcommand(“从表A中选择计数(*);从表B中选择计数(*);连接);
使用(var reader=command.ExecuteReader())
{
reader.Read();
resultA=reader.GetInt32(0);
reader.NextResult();
reader.Read();
resultB=reader.GetInt32(0);
}

Dapper.NET中是否有类似的功能

是的,DapperQueryMultiple扩展可以做到:

字符串查询[email protected]"从表A中选择计数(*);
从表B中选择计数(*);;
使用(var multi=connection.QueryMultiple(query,null))
{
int countA=multi.Read<int>().Single();
int countB=multi.Read<int>().Single();
}     

根据Marc Gravell的说法,这是在一个批次中执行多个查询的理想方式

注意:Dapper创建者Sam Saffron发布了一篇关于使用QueryMultiple完成此任务的详细解释,其中包含代码示例

更新:我添加了Marc的重要评论

注意:从1.5-ish(alpha版本稍早)开始,有一个
ReadSingle()方法,它可能比
Read().Single()

发表评论