use*_*129 52 .net c# sql sql-server dapper
ADO.NET中有一个很好的功能,允许您在一次往返中将多个SQL语句发送到数据库,并接收所有语句的结果:
var command = new SqlCommand("SELECT count(*) FROM TableA; SELECT count(*) FROM TableB;", connection);
using(var reader = command.ExecuteReader())
{
reader.Read();
resultA = reader.GetInt32(0);
reader.NextResult();
reader.Read();
resultB = reader.GetInt32(0);
}
Run Code Online (Sandbox Code Playgroud)
Dapper.NET中是否有类似的功能?
Ste*_*eve 87
是的,Dapper QueryMultiple扩展可以做到这一点:
string query = @"SELECT COUNT(*) FROM TABLEA;
SELECT COUNT(*) FROM TABLEB";
using (var multi = connection.QueryMultiple(query, null))
{
int countA = multi.Read<int>().Single();
int countB = multi.Read<int>().Single();
}
Run Code Online (Sandbox Code Playgroud)
根据Marc Gravell的说法,这是在一个批处理中执行多个查询的理想方式.
注意:Dapper创建者Sam Saffron在使用代码示例时发布了详细解释QueryMultiple.
var grid = connection.QueryMultiple("
SELECT COUNT(*) FROM TABLEA
SELECT COUNT(*) FROM TABLEB
SELECT COUNT(*) FROM TABLEC");
var lstResult = new List<int>();
var isNext = false;
do{
var first2 = info.Read<int>().Single();
lstResult.Add(first2);
isNext=info.IsConsumed;
}
while (!isNext);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40038 次 |
| 最近记录: |