温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

轻量级ORM框架Dapper应用怎么返回多个结果集

发布时间:2022-03-07 09:15:40 来源:亿速云 阅读:248 作者:iii 栏目:开发技术

这篇“轻量级ORM框架Dapper应用怎么返回多个结果集”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“轻量级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();

        }
    }
}

程序运行结果:

轻量级ORM框架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();

        }
    }
}

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

轻量级ORM框架Dapper应用怎么返回多个结果集

以上就是关于“轻量级ORM框架Dapper应用怎么返回多个结果集”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI