輕量級ORM框架Dapper應用之返回多個結果集
使用Dapper的QueryMultiple方法可以一次執行多條SQL語句,返回多個結果集,代碼如下
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using Dapper; using System.Data; using System.Data.SqlClient; using DapperAppQueryMultiple.Model; namespace DapperAppQueryMultiple { class Program { static void Main(string[] args) { // 定義連接字符串 string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString; using (IDbConnection connection = new SqlConnection(conn)) { var sql = @"SELECT * FROM Users WHERE UserId=@UserId; SELECT * FROM Product WHERE ProductId=@ProductId"; var queryMulti = connection.QueryMultiple(sql, new { UserId = 1, ProductId=3 }); // 註意:Read獲取的時候必須是按照上面返回表的順序 比如上面先查詢的Users表,那麼Read的時候必須先返回Users表,否則返回沒有數據 var users = queryMulti.Read<User>(); var products = queryMulti.Read<Product>(); Console.WriteLine("*****產品信息*****"); // 循環遍歷輸出 products.AsList<Product>().ForEach(p => { Console.WriteLine("產品名稱:"+p.ProductName+" 價格:"+p.Price); }); Console.WriteLine("*****產品信息*****"); Console.WriteLine("*****用戶信息*****"); users.AsList<User>().ForEach(p => { Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address); }); Console.WriteLine("*****用戶信息*****"); } Console.ReadKey(); } } }
程序運行結果:
註意:Read獲取的時候必須是按照上面返回表的順序 比如上面先查詢的Users表,那麼Read的時候必須先返回Users表,否則返回沒有數據。Read<T>裡面的T泛型類不一定要和數據庫表名相同,上面代碼的T泛型類是User,數據庫表名是Users。
下面的代碼演示返回順序不同:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using Dapper; using System.Data; using System.Data.SqlClient; using DapperAppQueryMultiple.Model; namespace DapperAppQueryMultiple { class Program { static void Main(string[] args) { // 定義連接字符串 string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString; using (IDbConnection connection = new SqlConnection(conn)) { var sql = @"SELECT * FROM Users WHERE UserId=@UserId; SELECT * FROM Product WHERE ProductId=@ProductId"; var queryMulti = connection.QueryMultiple(sql, new { UserId = 1, ProductId=3 }); // 先返回Product表的查詢數據 var products = queryMulti.Read<Product>(); var users = queryMulti.Read<User>(); Console.WriteLine("*****產品信息*****"); // 循環遍歷輸出 products.AsList<Product>().ForEach(p => { Console.WriteLine("產品名稱:"+p.ProductName+" 價格:"+p.Price); }); Console.WriteLine("*****產品信息*****"); Console.WriteLine("*****用戶信息*****"); users.AsList<User>().ForEach(p => { Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address); }); Console.WriteLine("*****用戶信息*****"); } Console.ReadKey(); } } }
上面的代碼隻是修改瞭返回表的數據,程序運行結果如下:
示例代碼下載地址:點此下載
到此這篇關於使用Dapper返回多個結果集的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 輕量級ORM框架Dapper應用之實現CURD操作
- 輕量級ORM框架Dapper應用之實現In操作
- C#中Dapper的使用教程
- 輕量級ORM框架Dapper應用支持操作函數和事物
- Entity Framework中執行sql語句