C# Dapper:高效ORM框架的完美選擇

一、快速上手

使用Dapper非常方便,通過Nuget引入Dapper,然後通過ADO.NET的Connection對象創建一個實例,就可以輕鬆地進行資料庫操作。Dapper中,使用擴展方法Execute()和Query()可以非常簡單地執行資料庫的增、刪、改、查操作。以下是一個簡單的示例,展示了Dapper如何執行一個Select語句:

using(var conn = new SqlConnection(connectionString))
{
    var results = conn.Query<T>(sql);
    return results.ToList();
}

這段代碼首先使用SqlConnection對象創建了一個連接,使用Query方法以及SQL查詢語句執行了一個查詢操作,查詢結果以List<T>類型返回,至此,我們已經完成了一個最簡單的Dapper查詢操作。

二、高效ORM框架

Dapper是一個輕量級、高效的ORM框架,相對於其他類似的框架,Dapper的速度更快,內存使用更少。

Dapper是怎麼做到高效的呢?Dapper的高效主要得益於其使用了一些優秀的設計原則,比如:

1、緩存機制: Dapper中內置了對緩存的支持,緩存的查詢結果可以增加查詢的效率,減少了對資料庫的壓力。例如:

conn.Query<T>(sql, param, commandTimeout: 20, buffered: true);

這段代碼中的buffered參數表示是否使用緩存,默認值為true,如果開啟了緩存,那麼查詢結果會被緩存到內存中。當查詢的數據比較大時,可以考慮關閉緩存。

2、方法支持非同步操作: Dapper提供了非同步操作的方法,充分利用CPU資源,做到高效查詢數據。例如:

await conn.QueryAsync<T>(sql, param);

3、支持手動映射: Dapper不同於其他ORM框架,採用手動映射,更加靈活且支持自定義映射。例如:

var data = connection.Query(sql, Map, splitOn: "", param:param).ToList();

這段代碼中的Map對象就是自定義的映射規則,Dapper會自動根據映射規則進行對象的轉換。

三、Dapper應用實例

1、使用Dapper操作cba賽程

以下是使用Dapper查詢cba賽程的代碼示例:

public class CbaGame
{
    public int Id { get; set; }
    public string HomeTeam { get; set; }
    public string GuestTeam { get; set; }
    public DateTime GameTime { get; set; }
}

public List<CbaGame> GetCbaGameList()
{
    var sql = "SELECT Id,HomeTeam,GuestTeam,GameTime FROM CbaGame ORDER BY GameTime DESC";
    using var conn = new SqlConnection(_connectionString);
    conn.Open();
    return conn.Query<CbaGame>(sql).ToList();
}

這段代碼中,我們通過一個名為CbaGame的類來映射CBA比賽的信息。我們使用了Query方法來查詢數據,並將結果填充到CbaGame對象中,最終返回一個List類型的數據。

2、使用Dapper實現clash管理系統

以下是使用Dapper實現clash管理系統的代碼示例:

public class Player
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Position { get; set; }
    public int Number { get; set; }
}

public List<Player> GetPlayerList()
{
    using var conn = new SqlConnection(_connectionString);
    conn.Open();
    var sql = "SELECT Id,Name,Position,Number FROM Player ORDER BY Number ASC";
    return conn.Query<Player>(sql).ToList();
}

這段代碼演示了如何使用Dapper獲取選手列表,我們使用了一個名為Player的類來映射選手的信息。我們先通過SqlConnection對象創建連接,然後使用Query方法執行查詢語句,並將返回的結果填充到Player對象中,最終返回一個List類型的選手數據。

3、使用Dapper操作cba總決賽

以下是使用Dapper操作cba總決賽的代碼示例:

public class CbaFinal
{
    public int Id { get; set; }
    public string Winner { get; set; }
    public string RunnerUp { get; set; }
    public DateTime Year { get; set; }
}

public List<CbaFinal> GetFinalList()
{
    var sql = "SELECT Id,Winner,RunnerUp,Year FROM CbaFinal ORDER BY Year DESC";
    using var conn = new SqlConnection(_connectionString);
    conn.Open();
    return conn.Query<CbaFinal>(sql).ToList();
}

這段代碼演示了如何使用Dapper獲取CBA總決賽列表,我們使用了一個名為CbaFinal的類來映射每一年的總決賽信息。我們同樣使用了Query方法來執行查詢語句,並將返回的結果填充到CbaFinal對象中,最終返回一個List類型的數據。

四、總結

本文從快速上手Dapper、Dapper高效的ORM框架、實際應用中的Dapper應用場景三個方面,對Dapper進行了詳細的闡述。Dapper不僅使用方便,而且高效快捷,是非常優秀的ORM框架之一。它可以幫助開發者極大地提高數據操作的效率和開發質量,更加方便地完成各種數據操作任務。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198671.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:26
下一篇 2024-12-04 10:26

相關推薦

  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • KeyDB Java:完美的分散式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • agavi開發框架

    Agavi是一個基於MVC模式的Web應用程序開發框架,以REST和面向資源的設計為核心思想。本文章將從Agavi的概念、優點、使用方法和實例等方面進行詳細介紹。 一、概念 Aga…

    編程 2025-04-29
  • Python unittest框架用法介紹

    Python unittest框架是Python自帶的一種測試框架,可以用來編寫並運行測試用例。在本文中,我們將從以下幾個方面詳細介紹Python unittest框架的使用方法和…

    編程 2025-04-29
  • com.alipay.sofa.bolt框架

    com.alipay.sofa.bolt框架是一款高性能、輕量級、可擴展的RPC框架。其廣泛被應用於阿里集團內部服務以及阿里雲上的服務。該框架通過NIO支持高並發,同時還內置了多種…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • Trocket:打造高效可靠的遠程控制工具

    如何使用trocket打造高效可靠的遠程控制工具?本文將從以下幾個方面進行詳細的闡述。 一、安裝和使用trocket trocket是一個基於Python實現的遠程控制工具,使用時…

    編程 2025-04-28
  • LuaEP:一款強大的Lua開發框架

    LuaEP是一個集成了可以快速開發web應用程序所需的組件的Lua開發框架。它以Lua語言為基礎,提供了許多常用介面和庫,使得開發者不需要從頭開始編寫web應用程序,而是專註於業務…

    編程 2025-04-28
  • Python生成列表最高效的方法

    本文主要介紹在Python中生成列表最高效的方法,涉及到列表生成式、range函數、map函數以及ITertools模塊等多種方法。 一、列表生成式 列表生成式是Python中最常…

    編程 2025-04-28

發表回復

登錄後才能評論