最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕量級ORM框架Dapper應用之實現(xiàn)Join操作

 更新時間:2022年03月07日 08:31:22   作者:.NET開發(fā)菜鳥  
本文詳細講解了使用Dapper實現(xiàn)Join操作,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在這篇文章中,講解如何使用Dapper使用Inner join的操作

1、新創(chuàng)建兩張表:Users表和Product表

Users表定義如下:

CREATE TABLE [dbo].[Users](
    [UserId] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](16) NULL,
    [Email] [varchar](32) NULL,
    [Address] [varchar](128) NULL,
PRIMARY KEY CLUSTERED 
(
    [UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Product表定義如下:

CREATE TABLE [dbo].[Product](
    [ProductId] [int] IDENTITY(1,1) NOT NULL,
    [ProductName] [varchar](16) NULL,
    [Price] [decimal](8, 2) NULL,
    [UserId] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [ProductId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

查看Users表和Product表會發(fā)現(xiàn)兩張表通過UserId外鍵關聯(lián)起來,然后我們需要在Product實體類上面進行修改,添加一個User的實體屬性,修改后的代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DapperApplicationJoin.Model
{
    public class Product
    {
        public int ProductId { get; set; }

        public string ProductName { get; set; }

        public User UserOwner { get; set; }

        public string Price { get; set; }
    }
}

User實體類定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DapperApplicationJoin.Model
{
    public class User
    {
        public int UserId { get; set; }

        public string UserName { get; set; }

        public string Email { get; set; }

        public string Address { get; set; }
    }
}

2、Main方法定義如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using Dapper;
using DapperApplicationJoin.Model;

namespace DapperApplicationJoin
{
    class Program
    {
        static void Main(string[] args)
        {
            string conn = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
            using (IDbConnection connection = new SqlConnection(conn))
            {
                string sql = @"
                            select p.ProductName,p.Price,u.UserName,u.UserId,u.Email,u.Address
                            from Product as p
                            join Users as u
                            on p.UserId=u.UserId;
                            ";

                var result = connection.Query<Product, User, Product>(sql,
                                       (product, users) =>
                                       {
                                           product.UserOwner = users; return product;
                                       }, splitOn: "UserName");
                var query = connection.Query(sql);
                // 輸出 使用動態(tài)類型
                query.AsList().ForEach(p =>
                {
                    Console.WriteLine("產品名稱:" + p.ProductName + ",產品價格:" + p.Price + ",用戶姓名:" + p.UserName);
                });
            }

            Console.ReadKey();
        }
    }
}

splitOn參數(shù)的含義:代碼中的splitOn是UserName,運行時,會從查詢結果所有字段列表的最后一個字段開始進行匹配,一直到找到UserName這個字段(大小寫忽略無所謂),找到的第一個UserName字段匹配的Product類的UserName屬性,那么從UserName到最后一個字段都屬于Product,UserName以前的字段都被影射到Users,通過 (T, P) => {return T; },把兩個類的實例解析出來。就實現(xiàn)了兩個數(shù)據(jù)的解析,要不然dapper也不知道哪個是Product哪個是Users的屬性。

除了可以使用上面的方法以外,還可以使用直接查詢SQL語句的方式:

using (IDbConnection connection = new SqlConnection(conn))
{
                string sql = @"
                                        select p.ProductName,p.Price,u.UserName,u.UserId,u.Email,u.Address
                                        from Product as p
                                        join Users as u
                                        on p.UserId=u.UserId;
                                        ";
                var query = connection.Query(sql);
                // 輸出 使用動態(tài)類型
                query.AsList().ForEach(p =>
                {
                    Console.WriteLine("產品名稱:" + p.ProductName + ",產品價格:" + p.Price + ",用戶姓名:" + p.UserName);
                });
}

運行結果如下:

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

到此這篇關于使用Dapper實現(xiàn)Join操作的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解ASP.NET MVC 利用Razor引擎生成靜態(tài)頁

    詳解ASP.NET MVC 利用Razor引擎生成靜態(tài)頁

    本篇文章主要介紹了ASP.NET MVC 利用Razor引擎生成靜態(tài)頁,詳細的介紹了原理和步驟,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • .Net Core讀取Json配置文件的實現(xiàn)示例

    .Net Core讀取Json配置文件的實現(xiàn)示例

    這篇文章主要介紹了.Net Core讀取Json配置文件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • .NET必知的EventCounters性能指標監(jiān)視器詳解

    .NET必知的EventCounters性能指標監(jiān)視器詳解

    這篇文章主要介紹了.NET必知的EventCounters性能指標監(jiān)視器,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • ASP.NET Core與NLog集成的完整步驟

    ASP.NET Core與NLog集成的完整步驟

    NLog是一個免費的日志記錄框架,專門為.net平臺下的框架提供日志功能,下面這篇文章主要給大家介紹了關于ASP.NET Core與NLog集成的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • asp.net Excel轉換為SQL Server的方法

    asp.net Excel轉換為SQL Server的方法

    辦公軟件Excel是一種常用的電子表格軟件,在編程項目中有需要將Excel轉換為SQL Server數(shù)據(jù)庫的需求,本文對此進行一些介紹并給出設計代碼。
    2009-06-06
  • 給自定義Web控件添加事件(前后臺代碼)

    給自定義Web控件添加事件(前后臺代碼)

    給自定義控件(Web Control)添加事件具體前后臺代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • Asp.net導出Excel/Csv文本格式數(shù)據(jù)的方法

    Asp.net導出Excel/Csv文本格式數(shù)據(jù)的方法

    這篇文章主要介紹了Asp.net導出Excel/Csv文本格式數(shù)據(jù)的方法,比較實用,需要的朋友可以參考下
    2014-09-09
  • ASP.NET Core3.1 Ocelot負載均衡的實現(xiàn)

    ASP.NET Core3.1 Ocelot負載均衡的實現(xiàn)

    這篇文章主要介紹了ASP.NET Core3.1 Ocelot負載均衡的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • ASP.NET中的Cache使用介紹

    ASP.NET中的Cache使用介紹

    這篇文章主要介紹了ASP.NET中的Cache使用介紹,本文講解了Cache 是怎么工作的、Cache 怎么創(chuàng)建及怎么銷毀、什么時候用cache、cache 調用注意事項等內容,需要的朋友可以參考下
    2015-06-06
  • DropDownList根據(jù)下拉項的Text文本序號排序

    DropDownList根據(jù)下拉項的Text文本序號排序

    在某些時候表中沒有可以排序的字段同時呢也不想修改表結構,但它的項文本有序號這時就可以用這方法排序,感興趣的你可以參考下,或許本文知識點對你有所幫助
    2013-03-03

最新評論

邮箱| 淮南市| 镶黄旗| 沾化县| 三门县| 保靖县| 化隆| 德昌县| 庆安县| 呼图壁县| 祁阳县| 团风县| 天峨县| 夹江县| 色达县| 安图县| 兴安县| 东至县| 开化县| 修文县| 全州县| 长阳| 大港区| 巴中市| 和田县| 大石桥市| 威宁| 榆社县| 沅陵县| 西平县| 斗六市| 赤水市| 西和县| 长宁区| 尚义县| 马龙县| 芜湖市| 中卫市| 孝感市| 渝北区| 连平县|