• 轻量级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

  • 相关阅读:
    Java实现简易聊天室
    Jnetpcap简述
    Win10系统配置Java环境变量
    截取HTML中的JSON数据并利用GSON进行解析(Android)
    Android实现监听控件点击事件
    Android实现点击两次返回退出APP
    简述RadioGroup和RadioButton的使用
    服务的最佳实践--完整版的下载示例
    使用HTTP协议访问网络(Android)
    补充1:IDA的脚本IDC语言
  • 原文地址:https://www.cnblogs.com/dotnet261010/p/8167959.html
Copyright © 2020-2023  润新知