欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

輕量級(jí)ORM框架Dapper應(yīng)用之返回多個(gè)結(jié)果集

 更新時(shí)間:2022年03月05日 17:12:58   作者:.NET開(kāi)發(fā)菜鳥  
這篇文章介紹了使用Dapper返回多個(gè)結(jié)果集的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

使用Dapper的QueryMultiple方法可以一次執(zhí)行多條SQL語(yǔ)句,返回多個(gè)結(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獲取的時(shí)候必須是按照上面返回表的順序 比如上面先查詢的Users表,那么Read的時(shí)候必須先返回Users表,否則返回沒(méi)有數(shù)據(jù)
                var users = queryMulti.Read<User>();
                var products = queryMulti.Read<Product>();
                Console.WriteLine("*****產(chǎn)品信息*****");
                // 循環(huán)遍歷輸出
                products.AsList<Product>().ForEach(p =>
                {
                    Console.WriteLine("產(chǎn)品名稱:"+p.ProductName+" 價(jià)格:"+p.Price);
                });
                Console.WriteLine("*****產(chǎn)品信息*****");

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


            Console.ReadKey();

        }
    }
}

程序運(yùn)行結(jié)果:

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

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

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


            Console.ReadKey();

        }
    }
}

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

示例代碼下載地址:點(diǎn)此下載

到此這篇關(guān)于使用Dapper返回多個(gè)結(jié)果集的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net Coolite TablePanel使用

    asp.net Coolite TablePanel使用

    TabPanel控件使用非常簡(jiǎn)單,但是功能卻非常強(qiáng)大,它同MenuPanel、TreePanel一樣提供了很多的集合屬性,可以定制出豐富的應(yīng)用。
    2010-03-03
  • .net平臺(tái)的rabbitmq使用封裝demo詳解

    .net平臺(tái)的rabbitmq使用封裝demo詳解

    這篇文章主要針對(duì)rabbitmq學(xué)習(xí)后封裝RabbitMQ.Client的一個(gè)分享,文章最后,我會(huì)把封裝組件和demo奉上,對(duì).net平臺(tái)的rabbitmq使用封裝相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-09-09
  • .NET中的異步編程-EAP/APM使用方法及案例介紹

    .NET中的異步編程-EAP/APM使用方法及案例介紹

    從.NET 4.5開(kāi)始,支持的三種異步編程模式:基于事件的異步編程設(shè)計(jì)模式;異步編程模型;基于任務(wù)的編程模型接下來(lái)先總結(jié)一下舊有的2種模式:EAP、APM,感興趣的朋友可以了解下
    2013-01-01
  • .NET Core中RabbitMQ使用死信隊(duì)列的實(shí)現(xiàn)

    .NET Core中RabbitMQ使用死信隊(duì)列的實(shí)現(xiàn)

    本文主要介紹了.NET Core中RabbitMQ使用死信隊(duì)列的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • .NET Core 3.0中WPF使用IOC的圖文教程

    .NET Core 3.0中WPF使用IOC的圖文教程

    這篇文章主要給大家介紹了關(guān)于在.NET Core 3.0中WPF使用IOC的圖文教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Equals和==的區(qū)別 公共變量和屬性的區(qū)別小結(jié)

    Equals和==的區(qū)別 公共變量和屬性的區(qū)別小結(jié)

    Equals 和==的區(qū)別 公共變量和屬性的區(qū)別 總結(jié)一下。
    2009-11-11
  • VS2013安裝提示必須安裝ie10的解決辦法

    VS2013安裝提示必須安裝ie10的解決辦法

    這篇文章主要為大家詳細(xì)介紹了VS2013安裝提示必須安裝ie10的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • asp.net的加密解密技巧

    asp.net的加密解密技巧

    這篇文章主要介紹了Asp.net的加密解密技巧,需要的朋友可以參考下
    2015-10-10
  • Asp.net Socket客戶端(遠(yuǎn)程發(fā)送和接收數(shù)據(jù))

    Asp.net Socket客戶端(遠(yuǎn)程發(fā)送和接收數(shù)據(jù))

    通過(guò)Socket遠(yuǎn)程發(fā)送與接收數(shù)據(jù)的代碼類
    2008-11-11
  • Asp.Net使用服務(wù)器控件Image/ImageButton顯示本地圖片的方法

    Asp.Net使用服務(wù)器控件Image/ImageButton顯示本地圖片的方法

    Image/ImageButton服務(wù)器控件顯示本地的圖片,實(shí)現(xiàn)思路是數(shù)據(jù)庫(kù)中存放了圖片的相對(duì)地址,讀取數(shù)據(jù)庫(kù)中的地址,用控件加載顯示圖片。具體實(shí)現(xiàn)步驟大家參考下本文
    2017-08-08

最新評(píng)論