您的位置:首页 > 移动开发

轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集

2018-01-01 17:18 549 查看
使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐