diff --git a/更新日志.md b/更新日志.md index 3ce9425..2730de1 100644 --- a/更新日志.md +++ b/更新日志.md @@ -10,6 +10,7 @@ - 修复 ISelect.ToDataTable(lambda) 未使用 AsProperty 返回数据; - 修复 IUpdate.Set(a => a.xx = null) 表达式解析 bug;#311 - 修复 Enum 类型无元素时的错误; +- 增加 IFreeSql.InsertOrUpdate 方法 [wiki](https://github.com/dotnetcore/FreeSql/wiki/%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9); - 增加 ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互)[wiki](https://github.com/dotnetcore/FreeSql/wiki/%E6%9F%A5%E8%AF%A2); - 增加 WhereCascade/GlobalFilter 表达式子查询的支持; - 增加 \[Description\] 元数据注释,优先级低于 c# 代码注释; diff --git a/添加或修改.md b/添加或修改.md index 89f14d1..f5684c5 100644 --- a/添加或修改.md +++ b/添加或修改.md @@ -1,5 +1,26 @@ FreeSql 提供了多种插入或更新方法,v0.11.11 之前主要使用 FreeSql.Repository/FreeSql.DbContext 库提供的方法实现。 +## IFreeSql.InsertOrUpdate + +IFreeSql 定义了 InsertOrUpdate 方法实现添加或修改的功能,利用数据库特性: + +| Database | Features | +| -- | -- | +| MySql | on duplicate key update | +| PostgreSQL | on conflict do update | +| SqlServer | merge into | +| Oracle | merge into | +| Sqlite | replace into | +| Dameng | merge into | + +注意:FreeSql.Repository 通用仓储也有 InsertOrUpdate 方法,它们的机制不一样。 + +```csharp +fsql.InsertOrUpdate() + .SetSource(items) //需要操作的数据 + .ExecuteAffrows(); +``` + ## FreeSql.Repository 之 InsertOrUpdate 此方法与 FreeSql.DbContext AddOrUpdate 方法功能一样。