![](/img/trans.png)
[英]Adding 2 sql table columns value to one C# property, using Dapper.NET
[英]Multiple SQL statements in one roundtrip using Dapper.NET
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);
}
Dapper.NET 中是否有類似的功能?
是的,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();
}
根據Marc Gravell 的說法,這是在單個批處理中執行多個查詢的理想方式。
注意:Dapper 創建者Sam Saffron發布了關於使用QueryMultiple
完成此操作的代碼示例的詳細說明。
更新:我添加了 Marc 的重要評論
注意:從 1.5-ish(alpha 版本的早期版本)有一個 ReadSingle() 方法可能比 Read().Single() 更方便和有效
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.