首页
学习
活动
专区
圈层
工具
发布

FlexLabs.Upsert:EF Core插件推荐,支持多数据库的Upsert功能

推荐一个Entity Framework Core插件,解决插入记录时存在冲突(如主键或唯一键冲突),则更新现有记录的功能。

01

项目简介

FlexLabs.Upsert是一个为Entity Framework Core(EF Core)提供Upsert功能的开源库,它允许在插入数据时,如果存在冲突(如主键或唯一键冲突),则更新现有记录。

这个库支持多种常见的数据库提供者,如PostgreSQL、Sqlite、SqlServer、Oracle和MySQL,并且使用它们各自的原生SQL语法来执行Upsert操作。

02

项目特点

支持多种数据库提供者:支持多种数据库,包括PostgreSQL、Sqlite、SqlServer、Oracle和MySQL,确保了广泛的兼容性。

灵活的配置选项:允许用户自定义冲突检测的条件和更新逻辑,提供了高度的灵活性。

异步操作支持:支持异步方法(如RunAsync()),提高了应用程序的性能和响应速度。

良好的错误处理:提供了错误处理机制,确保在Upsert操作失败时能够捕获和处理异常。

可扩展性:支持注入SQL命令运行器,以便为其他数据库提供者添加支持。

03

使用方法

检测存在相同UserID和Date的记录时,更新字段Visits。

using FlexLabs.EntityFrameworkCore.Upsert;

// 创建Upsert命令var upsert = DataContext.DailyVisits .Upsert(new DailyVisit { UserID = userID, Date = DateTime.UtcNow.Date, Visits = 1, }) .On(v => new { v.UserID, v.Date }) // 指定冲突检测条件 .WhenMatched(v => new DailyVisit { Visits = v.Visits + 1, // 定义更新逻辑 });

// 执行Upsert操作await upsert.RunAsync();

04

项目地址

https://github.com/artiomchi/FlexLabs.Upsert

- End -

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OL3WG3Q560goDbYiC9xNxY_Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券