日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

.NET輕量級(jí)ORM框架Dapper.NET的高級(jí)應(yīng)用實(shí)例詳解

來(lái)源: 責(zé)編: 時(shí)間:2024-02-06 10:11:45 397觀(guān)看
導(dǎo)讀Dapper是一個(gè)輕量級(jí)的ORM(對(duì)象關(guān)系映射)庫(kù),用于.NET應(yīng)用程序與數(shù)據(jù)庫(kù)之間的數(shù)據(jù)訪(fǎng)問(wèn)。它允許你使用SQL查詢(xún)來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作,而不需要復(fù)雜的映射配置。在這篇文章中,我將為您提供Dapper的高級(jí)應(yīng)用功能示例,每個(gè)示例都有源代

WpG28資訊網(wǎng)——每日最新資訊28at.com

Dapper是一個(gè)輕量級(jí)的ORM(對(duì)象關(guān)系映射)庫(kù),用于.NET應(yīng)用程序與數(shù)據(jù)庫(kù)之間的數(shù)據(jù)訪(fǎng)問(wèn)。它允許你使用SQL查詢(xún)來(lái)執(zhí)行數(shù)據(jù)庫(kù)操作,而不需要復(fù)雜的映射配置。在這篇文章中,我將為您提供Dapper的高級(jí)應(yīng)用功能示例,每個(gè)示例都有源代碼和注釋。這些示例將涵蓋Dapper的一些高級(jí)功能,以幫助你更好地理解如何在實(shí)際應(yīng)用中使用它。WpG28資訊網(wǎng)——每日最新資訊28at.com

示例1:多表關(guān)聯(lián)查詢(xún)

Dapper允許你輕松執(zhí)行多表關(guān)聯(lián)查詢(xún)。在這個(gè)示例中,我們將查詢(xún)兩個(gè)表,一個(gè)是Customers表,另一個(gè)是Orders表,并將它們關(guān)聯(lián)起來(lái)。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;using System.Linq;public class Customer{    public int CustomerId { get; set; }    public string CustomerName { get; set; }}public class Order{    public int OrderId { get; set; }    public int CustomerId { get; set; }    public decimal TotalAmount { get; set; }}class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string query = "SELECT c.CustomerId, c.CustomerName, o.OrderId, o.TotalAmount " +                       "FROM Customers c " +                       "JOIN Orders o ON c.CustomerId = o.CustomerId";        var result = dbConnection.Query<Customer, Order, Customer>(            query,            (customer, order) =>            {                customer.Orders = order;                return customer;            },            splitOn: "OrderId"        );        foreach (var customer in result)        {            Console.WriteLine($"Customer ID: {customer.CustomerId}, Name: {customer.CustomerName}");            Console.WriteLine($"Order ID: {customer.Orders.OrderId}, Total Amount: {customer.Orders.TotalAmount}");            Console.WriteLine();        }    }}

示例2:事務(wù)處理

Dapper允許你使用事務(wù)來(lái)確保一組操作要么全部成功,要么全部失敗。在這個(gè)示例中,我們將演示如何在Dapper中使用事務(wù)。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        dbConnection.Open();        using var transaction = dbConnection.BeginTransaction();        try        {            string insertQuery = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";            string updateQuery = "UPDATE Customers SET CustomerName = @CustomerName WHERE CustomerId = @CustomerId";            var product = new { Name = "ProductX", Price = 19.99 };            var customer = new { CustomerName = "NewName", CustomerId = 1 };            dbConnection.Execute(insertQuery, product, transaction: transaction);            dbConnection.Execute(updateQuery, customer, transaction: transaction);            // Commit the transaction if all operations are successful            transaction.Commit();            Console.WriteLine("Transaction committed.");        }        catch (Exception ex)        {            // Rollback the transaction if any operation fails            transaction.Rollback();            Console.WriteLine("Transaction rolled back. Error: " + ex.Message);        }    }}

示例3:自定義類(lèi)型映射

Dapper允許你自定義數(shù)據(jù)類(lèi)型到.NET類(lèi)型的映射。在這個(gè)示例中,我們將使用TypeHandler來(lái)自定義Point類(lèi)型的映射。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;using Npgsql;using NpgsqlTypes;public class Point{    public double X { get; set; }    public double Y { get; set; }}public class PointTypeHandler : SqlMapper.TypeHandler<Point>{    public override void SetValue(IDbDataParameter parameter, Point value)    {        parameter.Value = $"({value.X},{value.Y})";        parameter.DbType = DbType.String;    }    public override Point Parse(object value)    {        if (value is string strValue)        {            var parts = strValue.Trim('(', ')').Split(',');            if (parts.Length == 2 && double.TryParse(parts[0], out double x) && double.TryParse(parts[1], out double y))            {                return new Point { X = x, Y = y };            }        }        return null;    }}class Program{    static void Main()    {        SqlMapper.AddTypeHandler(new PointTypeHandler());        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new NpgsqlConnection(connectionString);        string query = "SELECT PointColumn FROM MyTable WHERE Id = @Id";        var result = dbConnection.Query<Point>(query, new { Id = 1 }).FirstOrDefault();        if (result != null)        {            Console.WriteLine($"X: {result.X}, Y: {result.Y}");        }        else        {            Console.WriteLine("Point not found.");        }    }}

示例4:批量插入

Dapper支持批量插入數(shù)據(jù),這對(duì)于大規(guī)模數(shù)據(jù)操作非常有用。在這個(gè)示例中,我們將演示如何批量插入多個(gè)產(chǎn)品記錄。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;public class Product{    public string Name { get; set; }    public decimal Price { get; set; }}class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        dbConnection.Open();        var products = new List<Product>        {            new Product { Name = "ProductA", Price = 10.99m },            new Product { Name = "ProductB", Price = 15.99m },            new Product { Name = "ProductC", Price = 20.99m }        };        string insertQuery = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";        int rowsAffected = dbConnection.Execute(insertQuery, products);        Console.WriteLine($"{rowsAffected} rows inserted.");    }}

示例5:自定義SQL語(yǔ)句

雖然Dapper通常用于執(zhí)行SQL查詢(xún),但你也可以執(zhí)行自定義的SQL語(yǔ)句,例如存儲(chǔ)過(guò)程或函數(shù)調(diào)用。在這個(gè)示例中,我們將演示如何執(zhí)行一個(gè)存儲(chǔ)過(guò)程。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string storedProcedure = "MyStoredProcedure";        var parameters = new DynamicParameters();        parameters.Add("Param1", 123);        parameters.Add("Param2", "TestValue", DbType.String, ParameterDirection.Input, 50);        var result = dbConnection.Query<int>(storedProcedure, parameters, commandType: CommandType.StoredProcedure).FirstOrDefault();        Console.WriteLine($"Stored procedure result: {result}");    }}

示例6:自定義SQL語(yǔ)句執(zhí)行

你可以使用Dapper的Execute方法來(lái)執(zhí)行自定義的SQL語(yǔ)句,而不僅僅是查詢(xún)。在這個(gè)示例中,我們將演示如何執(zhí)行一個(gè)自定義的更新語(yǔ)句。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string updateStatement = "UPDATE Customers SET CustomerName = @NewName WHERE CustomerId = @CustomerId";        var parameters = new { NewName = "NewName", CustomerId = 1 };        int rowsAffected = dbConnection.Execute(updateStatement, parameters);        Console.WriteLine($"{rowsAffected} rows updated.");    }}

示例7:異步查詢(xún)

Dapper支持異步查詢(xún),這對(duì)于高并發(fā)應(yīng)用程序非常有用。在這個(gè)示例中,我們將演示如何使用異步方法執(zhí)行查詢(xún)。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;using System.Threading.Tasks;class Program{    static async Task Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string query = "SELECT * FROM Products";        var products = await dbConnection.QueryAsync<Product>(query);        foreach (var product in products)        {            Console.WriteLine($"Name: {product.Name}, Price: {product.Price}");        }    }}

示例8:自定義表名

你可以使用Dapper的Table特性來(lái)指定實(shí)體類(lèi)與數(shù)據(jù)庫(kù)中不同表之間的映射關(guān)系。在這個(gè)示例中,我們將演示如何自定義表名。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;[Table("MyCustomTableName")]public class CustomTable{    public int Id { get; set; }    public string Name { get; set; }}class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string query = "SELECT * FROM MyCustomTableName";        var result = dbConnection.Query<CustomTable>(query);        foreach (var item in result)        {            Console.WriteLine($"Id: {item.Id}, Name: {item.Name}");        }    }}

示例9:自定義參數(shù)前綴

Dapper默認(rèn)使用@作為參數(shù)前綴,但你可以自定義參數(shù)前綴。在這個(gè)示例中,我們將演示如何自定義參數(shù)前綴為$WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;class Program{    static void Main()    {        SqlMapperExtensions.Configure("$$$"); // 設(shè)置參數(shù)前綴為 $$$        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        string query = "SELECT * FROM Products WHERE Name = $$$productName";        var result = dbConnection.Query<Product>(query, new { productName = "ProductA" });        foreach (var product in result)        {            Console.WriteLine($"Name: {product.Name}, Price: {product.Price}");        }    }}

示例10:查詢(xún)分頁(yè)

Dapper使分頁(yè)查詢(xún)變得容易,你可以使用LIMITOFFSET來(lái)執(zhí)行分頁(yè)查詢(xún)。在這個(gè)示例中,我們將演示如何執(zhí)行分頁(yè)查詢(xún)。WpG28資訊網(wǎng)——每日最新資訊28at.com

using Dapper;using System;using System.Data;using System.Data.SqlClient;class Program{    static void Main()    {        string connectionString = "YourConnectionStringHere";        using IDbConnection dbConnection = new SqlConnection(connectionString);        int pageSize = 10;        int pageNumber = 2;        string query = "SELECT * FROM Products ORDER BY ProductId OFFSET @Offset ROWS FETCH NEXT @PageSize ROWS ONLY";        var result = dbConnection.Query<Product>(query, new { Offset = (pageNumber - 1) * pageSize, PageSize = pageSize });        foreach (var product in result)        {            Console.WriteLine($"Name: {product.Name}, Price: {product.Price}");        }    }}

這些示例演示了Dapper的一些高級(jí)功能,包括多表關(guān)聯(lián)查詢(xún)、事務(wù)處理、自定義類(lèi)型映射、批量插入、自定義SQL語(yǔ)句、異步查詢(xún)、自定義表名、自定義參數(shù)前綴和查詢(xún)分頁(yè)。通過(guò)這些示例,你可以更好地了解如何在實(shí)際應(yīng)用中充分利用Dapper來(lái)簡(jiǎn)化數(shù)據(jù)訪(fǎng)問(wèn)任務(wù)。WpG28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-74665-0.html.NET輕量級(jí)ORM框架Dapper.NET的高級(jí)應(yīng)用實(shí)例詳解

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 學(xué)到了!Figma 原來(lái)是這樣表示矩形的

下一篇: 文件系統(tǒng)那些事兒,你學(xué)會(huì)了嗎?

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久国产成人精品| 亚洲免费观看视频| 国产精品mm| 国产精品一区二区你懂得 | 亚洲第一在线综合在线| 在线观看日韩专区| 日韩视频在线你懂得| 亚洲免费在线观看| 久久免费国产| 欧美日韩国产天堂| 国产欧美日韩亚洲一区二区三区| 欲香欲色天天天综合和网| 亚洲精品一二三| 亚洲综合社区| 嫩草国产精品入口| 国产精品久久久久影院亚瑟| 怡红院精品视频在线观看极品| 99精品国产高清一区二区| 亚洲综合成人婷婷小说| 久久躁狠狠躁夜夜爽| 欧美午夜精品电影| 在线观看视频一区| 亚洲欧美国产不卡| 免费影视亚洲| 国产精品视频区| 亚洲福利小视频| 亚洲视频在线免费观看| 久久永久免费| 国产精品你懂得| 亚洲精品国精品久久99热一| 欧美一级理论片| 欧美另类一区二区三区| 国产在线精品一区二区夜色| 99亚洲一区二区| 久久免费国产精品| 国产精品久久久久国产a级| 亚洲国产第一| 欧美在线免费视频| 欧美日韩视频一区二区| 在线成人av| 欧美在线观看视频一区二区三区| 欧美日韩国产三区| 在线观看成人一级片| 午夜欧美精品| 欧美日韩中文字幕在线视频| 亚洲高清电影| 久久全球大尺度高清视频| 国产精品素人视频| 一区二区三区四区五区在线| 欧美ed2k| 一区精品在线播放| 欧美专区在线| 国产精品五区| 亚洲视频一二三| 欧美高清视频一区二区| 在线播放国产一区中文字幕剧情欧美 | 国产亚洲精品v| 亚洲图片欧洲图片av| 欧美激情综合色| 在线观看视频日韩| 久久精品水蜜桃av综合天堂| 国产精品一区在线观看| 亚洲天堂网在线观看| 欧美精品偷拍| 91久久黄色| 麻豆精品在线观看| 伊人影院久久| 久久视频国产精品免费视频在线| 亚洲嫩草精品久久| 欧美视频在线一区| 一本色道久久综合狠狠躁篇怎么玩| 欧美成人资源| 91久久精品一区二区三区| 久久欧美肥婆一二区| 国产综合香蕉五月婷在线| 欧美一区二区三区四区在线观看| 国产精品久久久久久久久久ktv | 欧美在线视频观看| 国产欧美一区二区白浆黑人| 午夜精品久久久久久久久久久久久| 国产精品v欧美精品∨日韩| 99天天综合性| 国产精品久久久久9999| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩中文字幕| 亚洲视屏在线播放| 国产精品久久久亚洲一区| 亚洲一区二区日本| 国产精品毛片| 小黄鸭精品aⅴ导航网站入口| 国产精品一区二区男女羞羞无遮挡| 亚洲一区二区三区在线看| 国产精品色网| 欧美专区18| 亚洲福利专区| 欧美日韩国产精品专区| 一区二区三区四区精品| 国产精品日韩精品欧美精品| 欧美一区二区三区在线看| 韩国一区二区三区在线观看 | 国产欧美精品在线观看| 久久国产视频网| 尤物在线观看一区| 欧美顶级少妇做爰| 夜色激情一区二区| 国产精品免费网站| 性欧美精品高清| 一区免费视频| 欧美日韩高清一区| 亚洲欧美日韩一区在线| 国内精品久久久久久久果冻传媒| 久久午夜国产精品| 最近看过的日韩成人| 欧美日韩一区成人| 亚洲欧美春色| 激情小说另类小说亚洲欧美| 欧美国产大片| 亚洲一区二区三区久久 | 亚洲日本黄色| 国产精品久久久久aaaa樱花 | 国产美女精品免费电影| 久久久久综合| 亚洲三级影院| 国产精品免费aⅴ片在线观看| 久久精品视频在线看| 亚洲精品一区二区三区在线观看 | 欧美伦理a级免费电影| 亚洲一区二区精品视频| 韩国av一区二区三区四区| 欧美电影在线| 亚洲欧美自拍偷拍| 在线观看欧美亚洲| 欧美午夜精品理论片a级大开眼界| 欧美一区二区女人| 亚洲人午夜精品| 国产精品一二| 牛牛国产精品| 亚洲综合视频1区| 亚洲福利在线视频| 国产精品老女人精品视频| 久久影院亚洲| 亚洲影院免费观看| 亚洲高清免费| 国产精自产拍久久久久久蜜| 欧美护士18xxxxhd| 欧美在线观看网站| 一本一本久久| 在线观看一区视频| 国产精品美女诱惑| 欧美精品色综合| 久久精品1区| 亚洲色图在线视频| 亚洲国产欧美一区| 国产午夜精品麻豆| 欧美三级黄美女| 欧美chengren| 久久精品99国产精品酒店日本| 一区二区三区精品| 亚洲国产高清在线观看视频| 国产精品午夜在线| 欧美日韩ab| 美女图片一区二区| 欧美一级在线亚洲天堂| 在线亚洲免费| 亚洲欧洲日韩女同| 娇妻被交换粗又大又硬视频欧美| 国产精品h在线观看| 免费日韩视频| 久久精品国产在热久久| 亚洲欧美成人一区二区在线电影| 99精品国产在热久久下载| 在线观看视频一区二区| 国产一区二区精品久久| 国产精品久久久久久久久久久久久| 欧美激情bt| 老鸭窝毛片一区二区三区| 欧美在线免费| 亚洲欧美日韩一区二区三区在线| 国产精品99久久久久久久久| 亚洲激情一区| 亚洲成人在线网| 黄色成人在线网站| 国产亚洲毛片在线| 国产精品一区亚洲| 国产精品电影网站| 欧美日韩在线视频观看| 欧美另类一区| 欧美精品一区二区三区久久久竹菊 | 久热精品视频在线免费观看 | 欧美精品在线一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久国产视频91| 久久精品国产欧美激情| 欧美影院成人| 久久xxxx精品视频| 欧美一区二区三区精品| 亚洲欧美综合网| 午夜久久99| 午夜欧美不卡精品aaaaa| 亚洲欧美日韩专区| 午夜精品一区二区三区四区| 性视频1819p久久| 欧美亚洲综合网| 欧美综合激情网|