zoukankan      html  css  js  c++  java
  • 轻量级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

  • 相关阅读:
    Web项目管理工具精选(上)
    Web应用扩展系列(1):架构篇(转)
    Python高级特性(3): Classes和Metaclasses(转)
    Python高级特性(2):Closures、Decorators和functools(转)
    Python高级特性(1):Iterators、Generators和itertools(转)
    浅谈 Gevent 与 Tornado(转)
    使用gevent提高IO繁忙型wsgi服务的并发量(转)
    Python高级编程技巧(转)
    Python性能鸡汤(转)
    python采用pika库使用rabbitmq总结,多篇笔记和示例(转)
  • 原文地址:https://www.cnblogs.com/dotnet261010/p/8167959.html
Copyright © 2011-2022 走看看