日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

輕量級ORM框架Dapper應(yīng)用之返回多個結(jié)果集_實用技巧

作者:.NET開發(fā)菜鳥 ? 更新時間: 2022-05-05 編程語言

使用Dapper的QueryMultiple方法可以一次執(zhí)行多條SQL語句,返回多個結(jié)果集,代碼如下

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表,否則返回沒有數(shù)據(jù)
                var users = queryMulti.Read();
                var products = queryMulti.Read();
                Console.WriteLine("*****產(chǎn)品信息*****");
                // 循環(huán)遍歷輸出
                products.AsList().ForEach(p =>
                {
                    Console.WriteLine("產(chǎn)品名稱:"+p.ProductName+" 價格:"+p.Price);
                });
                Console.WriteLine("*****產(chǎn)品信息*****");

                Console.WriteLine("*****用戶信息*****");
                users.AsList().ForEach(p => {
                    Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address);
                });
                Console.WriteLine("*****用戶信息*****");
            }


            Console.ReadKey();

        }
    }
}

程序運行結(jié)果:

注意:Read獲取的時候必須是按照上面返回表的順序 比如上面先查詢的Users表,那么Read的時候必須先返回Users表,否則返回沒有數(shù)據(jù)。Read里面的T泛型類不一定要和數(shù)據(jù)庫表名相同,上面代碼的T泛型類是User,數(shù)據(jù)庫表名是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表的查詢數(shù)據(jù)
                var products = queryMulti.Read();
                var users = queryMulti.Read();

                Console.WriteLine("*****產(chǎn)品信息*****");
                // 循環(huán)遍歷輸出
                products.AsList().ForEach(p =>
                {
                    Console.WriteLine("產(chǎn)品名稱:"+p.ProductName+" 價格:"+p.Price);
                });
                Console.WriteLine("*****產(chǎn)品信息*****");

                Console.WriteLine("*****用戶信息*****");
                users.AsList().ForEach(p => {
                    Console.WriteLine("用戶姓名:"+p.UserName+" 郵箱:"+p.Email+" 地址:"+p.Address);
                });
                Console.WriteLine("*****用戶信息*****");
            }


            Console.ReadKey();

        }
    }
}

上面的代碼只是修改了返回表的數(shù)據(jù),程序運行結(jié)果如下:

示例代碼下載地址:點此下載

原文鏈接:https://www.cnblogs.com/dotnet261010/p/8167959.html

欄目分類
最近更新