如何用Dapper实现返回多个结果集的长尾查询?

2026-03-30 10:381阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计661个文字,预计阅读时间需要3分钟。

如何用Dapper实现返回多个结果集的长尾查询?

使用Dapper的QueryMultiple方法可以一次性执行多条SQL语句,并返回多个结果集。以下是一个示例代码:

csharpusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;

public class Program{ public static async Task Main(string[] args) { string connectionString=your_connection_string; using (var connection=new SqlConnection(connectionString)) { await connection.OpenAsync(); var multi=await connection.QueryMultipleAsync(SELECT * FROM Table1; SELECT * FROM Table2;); var results1=await multi.ReadAsync(); var results2=await multi.ReadAsync(); // 处理结果集 } }}

使用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(); } } }

程序运行结果:

如何用Dapper实现返回多个结果集的长尾查询?

注意: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返回多个结果集的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计661个文字,预计阅读时间需要3分钟。

如何用Dapper实现返回多个结果集的长尾查询?

使用Dapper的QueryMultiple方法可以一次性执行多条SQL语句,并返回多个结果集。以下是一个示例代码:

csharpusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;

public class Program{ public static async Task Main(string[] args) { string connectionString=your_connection_string; using (var connection=new SqlConnection(connectionString)) { await connection.OpenAsync(); var multi=await connection.QueryMultipleAsync(SELECT * FROM Table1; SELECT * FROM Table2;); var results1=await multi.ReadAsync(); var results2=await multi.ReadAsync(); // 处理结果集 } }}

使用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(); } } }

程序运行结果:

如何用Dapper实现返回多个结果集的长尾查询?

注意: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返回多个结果集的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。