轻量级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(); var products = queryMulti.Read(); Console.WriteLine("*****产品信息*****"); // 循环遍历输出products.AsList().ForEach(p =>{Console.WriteLine("产品名称:"+p.ProductName+" 价格:"+p.Price); }); Console.WriteLine("*****产品信息*****"); Console.WriteLine("*****用户信息*****"); users.AsList ().ForEach(p => {Console.WriteLine("用户姓名:"+p.UserName+" 邮箱:"+p.Email+" 地址:"+p.Address); }); Console.WriteLine("*****用户信息*****"); }Console.ReadKey(); }}}
程序运行结果:
文章图片
注意:Read获取的时候必须是按照上面返回表的顺序 比如上面先查询的Users表,那么Read的时候必须先返回Users表,否则返回没有数据。Read下面的代码演示返回顺序不同:里面的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(); var users = queryMulti.Read(); Console.WriteLine("*****产品信息*****"); // 循环遍历输出products.AsList().ForEach(p =>{Console.WriteLine("产品名称:"+p.ProductName+" 价格:"+p.Price); }); Console.WriteLine("*****产品信息*****"); Console.WriteLine("*****用户信息*****"); users.AsList ().ForEach(p => {Console.WriteLine("用户姓名:"+p.UserName+" 邮箱:"+p.Email+" 地址:"+p.Address); }); Console.WriteLine("*****用户信息*****"); }Console.ReadKey(); }}}
上面的代码只是修改了返回表的数据,程序运行结果如下:
文章图片
示例代码下载地址:点此下载
【轻量级ORM框架Dapper应用之返回多个结果集】到此这篇关于使用Dapper返回多个结果集的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 轻量级ORM框架Dapper应用之实现In操作
- 新浪开源轻量级分布式RPC框架motan简单示例解析
- 轻量级ORM框架Dapper应用之实现CURD操作
- 计算机网络|网络入门基础模型, 网络大体框架, TCP/IP协议栈, 各种局域网和广域网刨析 (以图解的方式推开网络大门)
- 【.NET6+WPF】WPF使用prism框架+Unity|【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
- 面向企业级前端应用的开发框架|面向企业级前端应用的开发框架 UI5 的发展简史介绍
- mybatis|mybatis plus框架@TableField注解不生效问题及解决方案
- Pico.css|Pico.css - 简单优雅的纯 CSS 开源 UI 框架,用原始的 HTML 元素标签来做界面
- mybatis|mybatis plus框架的@TableField注解不生效问题总结
- 聊聊Canvas渲染相关|聊聊Canvas渲染相关 (非API层,偏框架设计方面)