日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 中的 ORM 之 Dapper

發布時間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 中的 ORM 之 Dapper 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dapper簡介

Dapper是.NET的一款輕量級ORM工具(GitHub),也可稱為簡單對象映射器。在速度方面擁有微型ORM之王的稱號。
它是半自動的,也就是說實體類和SQL語句都要自己寫,但它提供自動對象映射。是通過對IDbConnection接口的擴展來操作數據庫的。

優點

  • 輕量,只有一個文件

  • 性能高,Dapper的速度接近與IDataReader,取列表的數據超過了DataTable。

  • 支持多種數據庫。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server

  • 使用Dapper可以自動進行對象映射,通過Emit反射IDataReader的序列隊列,來快速的得到和產生對象

使用Dapper

下面簡單創建一個Web API應用并通過Dapper訪問MySQL數據。

  • 創建MySQL測試數據

  • 創建Web API應用并添加NuGet引用

    Install-Package MySql.Data

    Install-Package Dapper

    新建一個Product類

    新建一個DBConfig類用于創建并返回數據庫連接

    創建簡單的倉儲接口和類

    在Startup ConfigureServices方法里面配置依賴注入

    在Controller里面調用倉儲方法

  • 測試API是否可以正常工作

  • Dapper對存儲過程和事務的支持

    存儲過程

  • 事務

    Dapper對多表映射的支持

    使用Dapper Contrib或其他擴展

    Dapper Contrib擴展Dapper提供了CRUD的方法

    • Get

    • GetAll

    • Insert

    • Update

    • Delete

    • DeleteAll

  • 添加NuGet引用Dapper.Contrib

    Install-Package Dapper.Contrib
  • 為Product類添加數據注解

  • 增加一個新的倉儲類繼承

  • 修改Startup ConfigureServices方法里面配置依賴注入

    services.AddTransient<IProductRepository, ContribProductRepository>();

    測試,這樣可以少寫了不少基本的SQL語句。

  • 其他一些開源的Dapper擴展

  • 類庫提供的方法
    Dapper.SimpleCRUDGet?GetList?GetListPaged?Insert?Update?Delete?DeleteList?RecordCount
    Dapper PlusBulk Insert?Bulk Delete?Bulk Update?Bulk Merge?Bulk Action Async?Bulk Also Action?Bulk Then Action
    Dapper.FastCRUDGet?Find?Insert?Update?BulkUpdate?Delete?BulkDelete?Count
    Dapper.MapperMulti-mapping

    引入工作單元Unit of Work

    倉儲模式往往需要工作單元模式的介入來負責一系列倉儲對象的持久化,確保數據完整性。網上關于工作單元模式的實現方式有多種,但其本質都是工作單元類通過創建一個所有倉儲共享的數據庫上下文對象,來組織多個倉儲對象。

    網上的一些實現方式:

    • Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application
      微軟之前給出的一個示例,倉儲類做為工作單元的變量,并通過工作單元傳入一致的context參數創建。

    • DDD 領域驅動設計-談談 Repository、IUnitOfWork 和 IDbContext 的實踐
      博客園一位大神的總結,最終采用的方案是倉儲類負責查詢,工作單元類負責增刪改等數據持久化操作。

    優缺點不作討論,適合自己的就是最好的,這里采用了另外一種實現方式:

    • 定義DapperDBContext

    后面省略了很多代碼,有興趣通過閱讀原文到博客上去閱讀。

    原文地址:?https://www.cnblogs.com/royzshare/p/9522127.html


    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    總結

    以上是生活随笔為你收集整理的ASP.NET Core 中的 ORM 之 Dapper的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。