輕量級ORM框架Dapper應用四:使用Dapper返回多個結果集


使用Dapper的QueryMultiple方法可以一次執行多條SQL語句,返回多個結果集,代碼如下

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Configuration;
 7 using Dapper;
 8 using System.Data;
 9 using System.Data.SqlClient;
10 using DapperAppQueryMultiple.Model;
11 
12 namespace DapperAppQueryMultiple
13 {
14     class Program
15     {
16         static void Main(string[] args)
17         {
18             // 定義連接字符串
19             string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
20             using (IDbConnection connection = new SqlConnection(conn))
21             {
22                 var sql = @"SELECT * FROM Users WHERE UserId=@UserId;
23                             SELECT * FROM Product WHERE ProductId=@ProductId";
24                 var queryMulti = connection.QueryMultiple(sql, new { UserId = 1, ProductId=3 });
25 
26                 // 注意:Read獲取的時候必須是按照上面返回表的順序 比如上面先查詢的Users表,那么Read的時候必須先返回Users表,否則返回沒有數據
27                 var users = queryMulti.Read<User>();
28                 var products = queryMulti.Read<Product>();
29                 Console.WriteLine("*****產品信息*****");
30                 // 循環遍歷輸出
31                 products.AsList<Product>().ForEach(p => 
32                 {
33                     Console.WriteLine("產品名稱:"+p.ProductName+" 價格:"+p.Price);
34                 });
35                 Console.WriteLine("*****產品信息*****");
36 
37                 Console.WriteLine("*****用戶信息*****");
38                 users.AsList<User>().ForEach(p => {
39                     Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address);
40                 });
41                 Console.WriteLine("*****用戶信息*****");
42             }
43 
44 
45             Console.ReadKey();
46 
47         }
48     }
49 }

 

程序運行結果:

注意:Read獲取的時候必須是按照上面返回表的順序 比如上面先查詢的Users表,那么Read的時候必須先返回Users表,否則返回沒有數據。Read<T>里面的T泛型類不一定要和數據庫表名相同,上面代碼的T泛型類是User,數據庫表名是Users。

下面的代碼演示返回順序不同:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Configuration;
 7 using Dapper;
 8 using System.Data;
 9 using System.Data.SqlClient;
10 using DapperAppQueryMultiple.Model;
11 
12 namespace DapperAppQueryMultiple
13 {
14     class Program
15     {
16         static void Main(string[] args)
17         {
18             // 定義連接字符串
19             string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
20             using (IDbConnection connection = new SqlConnection(conn))
21             {
22                 var sql = @"SELECT * FROM Users WHERE UserId=@UserId;
23                             SELECT * FROM Product WHERE ProductId=@ProductId";
24                 var queryMulti = connection.QueryMultiple(sql, new { UserId = 1, ProductId=3 });
25 
26                 // 先返回Product表的查詢數據
27                 var products = queryMulti.Read<Product>();
28                 var users = queryMulti.Read<User>();
29                 
30                 Console.WriteLine("*****產品信息*****");
31                 // 循環遍歷輸出
32                 products.AsList<Product>().ForEach(p => 
33                 {
34                     Console.WriteLine("產品名稱:"+p.ProductName+" 價格:"+p.Price);
35                 });
36                 Console.WriteLine("*****產品信息*****");
37 
38                 Console.WriteLine("*****用戶信息*****");
39                 users.AsList<User>().ForEach(p => {
40                     Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address);
41                 });
42                 Console.WriteLine("*****用戶信息*****");
43             }
44 
45 
46             Console.ReadKey();
47 
48         }
49     }
50 }

 上面的代碼只是修改了返回表的數據,程序運行結果如下:

示例代碼下載地址:https://pan.baidu.com/s/1hserGTu


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM