使用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 = , ProductId= }); // 注意: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 = , ProductId= }); // 先返回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(); }
}
}

上面的代码只是修改了返回表的数据,程序运行结果如下:

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

轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集的更多相关文章

  1. 轻量级ORM框架初探-Dapper与PetaPoco的基本使用

    一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...

  2. .NET轻量级ORM框架Dapper入门精通

    一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架 ...

  3. 轻量级ORM框架Dapper应用一:Dapper安装

    一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapp ...

  4. 分享自己写的基于Dapper的轻量级ORM框架~

    1.说明 本项目是一个使用.NET Standard 2.0开发的,基于 Dapper 的轻量级 ORM 框架,包含基本的CRUD以及根据表达式进行一些操作的方法,目前只针对单表,不包含多表连接操作. ...

  5. C# 性能优化 之 秒表 Stopwatch。 Dapper一个和petapoco差不多的轻量级ORM框架

    Sweet小马 小马同学的编程日记. C# 性能优化 之 秒表 Stopwatch. 生词解释:Diagnostics[,daɪəg'nɑstɪks] n.诊断学 using System.Diagn ...

  6. c# 轻量级ORM框架 实现(一)

    发布一个自己写的一个轻量级ORM框架,本框架设计期初基于三层架构.所以从命名上来看,了解三层的朋友会很好理解. 设计该框架的目的:不想重复的写增删改查,把精力放到功能实现上. 发布改框架的原因:希望给 ...

  7. 轻量级ORM框架 QX_Frame.Bantina(二、框架使用方式介绍)

    轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...

  8. 轻量级ORM框架 QX_Frame.Bantina(一、框架简介)

    轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...

  9. 基于轻量级ORM框架Dapper的扩展说明

    这里简单的介绍一下本人基于Dapper作的一些简单的扩展,供大家参考. 为何要使用这款框架,相信大家看到下面排名就清楚了 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco ...

随机推荐

  1. 【LeetCode】133. Clone Graph (3 solutions)

    Clone Graph Clone an undirected graph. Each node in the graph contains a label and a list of its nei ...

  2. 【LeetCode】136. Single Number (4 solutions)

    Single Number Given an array of integers, every element appears twice except for one. Find that sing ...

  3. 马哥 Linux运维基础进阶和shell入门

    地址:http://edu.51cto.com/course/course_id-618.html 紧接马哥linux专题 第一讲 Bash变量: 1byte= -128,127 2bytes -32 ...

  4. 网站跳转到cgi-sys/defaultwebpage.cgi的原因和解决方式

    cpanel遇到这种问题,看了这篇文章老鹰主机域名解析A记录教程–关于cgi-sys/defaultwebpage.cgi后,尝试后     首先ping 域名,结果如下     看到没有ping结果 ...

  5. 房产地图google map的初步应用点滴.1)(转)

    房产地图google map的初步应用点滴.1)房产地图google map的初步应用点滴.2)房产地图google map的初步应用点滴.3) 房产地图google map的初步应用点滴.4) 以前 ...

  6. Python find() 方法

    描述 Python find() 方法从字符串中找出某个子字符串第一个匹配项的索引位置,该方法与index() 方法一样,只不过如果子字符串不在字符串中不会报异常,而是返回-1. 语法 find() ...

  7. cv1.0入门

    作者 群号 C语言交流中心 环境 VS2010UltimTrial1.iso                    http://pan.baidu.com/s/1dEL85kl VS2010Ulti ...

  8. springmvc+spring+mybatis+maven项目构建

    1.首先在myeclipse10中安装maven的插件,将插件放入D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropin ...

  9. no link present

    今天装linux 系统.然后:service network restart的时候提演示样例如以下的错误: .............................................. ...

  10. ubantu 文件解压缩

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar. ...