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 项目特点

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

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

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

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

  5. 可扩展性:支持注入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#接口调用+局域网访问!全攻略来了!

相关推荐
YOU OU7 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_9 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森10 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_10 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白11 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面11 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧12 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈12 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy12 小时前
log4net 数据库存日志正确配置
数据库