我想用一個查詢返回兩個結果。例如查詢表,此外我想返回整個表的大小。Dapper使用一個查詢返回多個結果
我不能在c#中完成它,因爲我只想查詢前100個結果的實例,但應該可以讓客戶查詢下100個結果。但事先我想告訴客戶是否有進一步的結果。
例如,我有一張有150個結果的表格。在第一個電話中,我只獲得了前100個結果。但是我也希望得到沒有調用第二個查詢仍有50個結果的信息。這是否可能與精巧?
我想用一個查詢返回兩個結果。例如查詢表,此外我想返回整個表的大小。Dapper使用一個查詢返回多個結果
我不能在c#中完成它,因爲我只想查詢前100個結果的實例,但應該可以讓客戶查詢下100個結果。但事先我想告訴客戶是否有進一步的結果。
例如,我有一張有150個結果的表格。在第一個電話中,我只獲得了前100個結果。但是我也希望得到沒有調用第二個查詢仍有50個結果的信息。這是否可能與精巧?
這是可能的小巧玲瓏?
Dapper只是一個對象關係映射器,即從面向對象的領域模型映射到關係數據庫。您仍然需要詢問數據庫(使用查詢)總共有多少條記錄。 Dapper不會神奇地爲你解決這個問題。
因此,您需要修改發送到數據庫的查詢(使用Dapper),以便不僅選擇表中的前100行,而且還需要包含一個數字的附加列,該數字指定了數據庫中的記錄總數表。只有數據庫知道這個數字,所以你必須要求它。
您可以嘗試QueryMultiple:
using (var conn = new SqlConnection(@"Data Source=.\sqlexpress;Integrated Security=true; Initial Catalog=foo"))
{
using (var data = conn.QueryMultiple("select count(*) as TotalCount from data; select top 2 * from data", null))
{
var totalRecords = data.Read<int>().Single();
var records = data.Read<dynamic>();
var remaining = totalRecords - records.Count();
}
}
這可能滿足OP的要求,但這不完全是他所要求的。這仍然會執行兩個查詢。它會批量他們。我同意@ mm8。 –
這是兩個sql查詢,但是隻有一次訪問數據庫。 –
如果你真的只是想知道如果有更多的結果,並沒有有多少,你可以將搜索結果限制爲101。然後折騰了第101行哪隻是一個指標,有超過100行。
您還可以查詢整個表,但只顯示前100行,你已經知道,如果有更多的數據顯示,當用戶請求下一組數據的
獲取的總記錄數,前100個記錄和總數 - 100個使用單個查詢? – TheFallenOne