前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dapper-Plus:一个基于 Dapper 的.Net扩展库,提供高性能的批量操作功能

Dapper-Plus:一个基于 Dapper 的.Net扩展库,提供高性能的批量操作功能

作者头像
郑子铭
发布于 2025-04-19 15:52:27
发布于 2025-04-19 15:52:27
14200
代码可运行
举报
运行总次数:0
代码可运行

推荐一个Dapper的扩展库,提供高效的批量操作扩展方法(如批量插入、更新、删除和合并)。

01

项目简介

Dapper-Plus 是一个基于 Dapper 的扩展库,专注于提供高性能的批量操作功能。它不仅可以与 Dapper 一起使用,还兼容其他所有 Dapper 包。通过简单的配置和映射,开发者可以轻松实现高效的数据库批量操作。

02

核心功能

  1. 批量操作
    • Bulk Insert(批量插入):支持批量插入数据。
    • Bulk Update(批量更新):支持批量更新数据。
    • Bulk Delete(批量删除):支持批量删除数据。
    • Bulk Merge(批量合并):支持批量合并数据。
  2. 扩展操作
    • Also Bulk Actions:允许在执行批量操作时,通过 Lambda 表达式指定相关实体的额外批量操作。
    • Then Bulk Actions:允许在执行批量操作时,通过 Lambda 表达式修改实体,并用于后续的批量操作。
    • Include Actions:允许通过嵌套的方式解决多个 ThenBulk 方法的问题。
  3. 事务支持
    • 所有 Dapper-Plus 的扩展方法也支持 IDbTransaction 接口,可以方便地在事务中使用。
  4. 数据库支持
    • 支持主流的数据库系统,包括 SQL Server、SQL Azure、SQLiteMySQLPostgreSQL 和 Oracle。

03

使用方法

1、安装依赖库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Install-Package Dapper.Plus

2、映射器

可以将实体与存储模型(数据库)进行映射,并配置执行批量操作的选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DapperPlusManager.Entity<Order>().Table("Orders")
                 .Identity(x => x.ID)
                 .BatchSize(200);

3、批量操作

执行批量插入、更新、删除或合并,并包含相关子项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connection.BulkInsert(orders, order => order.Items)
          .BulkInsert(invoices, invoice => invoice.Items)
          .BulkMerge(shippingAddresses);

4、附加批量操作

使用 Lambda 表达式,基于最近一次的批量操作或后续批量操作的实体执行批量操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connection.BulkInsert(orders)
          .AlsoInsert(order => order.Items)
          .AlsoInsert(order => order.Invoice)
          .AlsoInsert(order => order.Invoice.Items);

5、包含操作

Include 方法允许解决多个 ThenBulk 方法的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connection.BulkInsert(orders)
          .Include(x => x.ThenInsert(order => order.Items)
                         .ThenInsert(orderItem => orderItem.Metas))
          .Include(x => x.ThenInsert(order => order.Invoice)
                         .ThenInsert(Invoice => invoice.Items));

6、支持事务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
transaction.BulkInsert(orders)
          .Include(x => x.ThenInsert(order => order.Items)
                         .ThenInsert(orderItem => orderItem.Metas))
          .Include(x => x.ThenInsert(order => order.Invoice)
                         .ThenInsert(Invoice => invoice.Items));

04

项目地址

https://github.com/zzzprojects/Dapper-Plus

- End -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验