轻量级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返回多个结果集的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 轻量级ORM框架Dapper应用之安装Dapper

    一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapper作为ORM框架可能是明智之举,当然也可以使用Entity Framework或NHibernate来处理大数据访问及关系映射. 二.为什么选择Dapper 1.轻量:只有一个文件(SqlMapper.cs),编译完成之后只有140K. 2.速度快:Dapper的速度接近于IDataReader,

  • 轻量级ORM框架Dapper应用之实现CURD操作

    在上一篇文章中,讲解了如何安装Dapper,这篇文章中将会讲解如何使用Dapper使用CURD操作. 例子中使用到的实体类定义如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DapperApplicationDemo.Model { public class User { public

  • 轻量级ORM框架Dapper应用之实现In操作

    IN 操作符允许我们在 WHERE 子句中规定多个值. 本篇文章中,还是使用和上篇文章中同样的实体类和数据库,Dapper使用in操作符的代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using Dapper; using System.Data

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

  • 轻量级ORM框架Dapper应用之实现DTO

    一.什么是DTO 先来看看百度百科的解释: 数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统.数据传输目标往往是数据访问对象从数据库中检索数据.数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器). 二.为什么需要DTO 在一个软件系统的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户界面上.这样做的一个问题是:用于在用户界面上展示的数据模型和从数据库中取得的数

  • 轻量级ORM框架Dapper应用支持操作函数和事物

    dapper除了支持基础的CURD.存储过程以外,还支持操作函数和事物. dapper操作函数的代码如下: using Dapper; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threadi

  • 轻量级ORM框架Dapper应用之Dapper支持存储过程

    在Entity Framework中讲解了EF如何支持存储过程,同样,Dapper也支持存储过程,只需要在Query()方法的CommandType中标记使用的是存储过程就可以了.在Users表上面创建如下的存储过程: CREATE proc sp_GetUserByUserName @UserName varchar(16) as begin select * FROM Users WHERE UserName=@UserName end GO 调用存储过程的代码如下: using Syste

  • 轻量级ORM框架Dapper应用之实现Join操作

    在这篇文章中,讲解如何使用Dapper使用Inner join的操作 1.新创建两张表:Users表和Product表 Users表定义如下: CREATE TABLE [dbo].[Users]( [UserId] [int] IDENTITY(1,1) NOT NULL, [UserName] [varchar](16) NULL, [Email] [varchar](32) NULL, [Address] [varchar](128) NULL, PRIMARY KEY CLUSTERED

  • python轻量级orm框架 peewee常用功能速查详情

    目录 一.常见orm数据库框架 1.peewee 简单demo 二.Model 和 Field 关系 三.Model 模型 四.Filed 字段 1.字段初始化参数 2.字段特有参数 3.字段默认参数 4.索引 五.基本操作 增删改查 1.创建 2.删除 3.更新 4.查询 5.事务 6.过滤 7.记录分类 8.计数 9.分页 六.聚合查询 七.Scalar 八.窗口 九.复杂筛选 1.查询中支持的筛选运算符 2.筛选方法 3.联合查询逻辑操作 十.SQL 方法 1.SQL helper 2.安

  • Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    本文实例讲述了Python轻量级ORM框架Peewee访问sqlite数据库的方法.分享给大家供大家参考,具体如下: ORM框架就是 object relation model,对象关系模型,用来实现把数据库中的表 映射到 面向对象编程语言中的类,不需要写sql,通过操作对象就能实现 增删改查. ORM的基本技术有3种: (1)映射技术 数据类型映射:就是把数据库中的数据类型,映射到编程语言中的数据类型.比如,把数据库的int类型映射到Python中的integer 类型. 类映射:把数据库中的

随机推荐