推荐一个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 -
推荐阅读
2个零基础入门框架教程!
SmartFormat:轻量级文本模板库,轻松替代 string.Format
Squidex:一个基于.Net功能强大的CMS开源项目
barcodelib:一个功能强大且易于使用的 C# 条形码生成库
一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略来了!