You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无标识列的SQL Server表能否使用Dapper Plus的BulkMerge?

无标识列时使用Dapper Plus的BulkMerge方案

当然可以在无标识列的主键场景下使用Dapper Plus的BulkMerge,不需要额外用BulkInsert+BulkUpdate组合,只需正确配置主键映射即可,这也是更高效的方案。

核心实现步骤

  • 配置实体与表的主键映射:通过Identity方法指定你的主键字段(即使它不是数据库标识列),Dapper Plus会以此作为判断记录存在性的依据,执行合并逻辑。
  • 直接调用BulkMerge:配置完成后即可正常调用方法,内部会自动处理新增和更新逻辑。

示例代码:

using (var connection = new SqlConnection("YourConnectionString"))
{
    // 配置实体映射:指定表名和主键字段(非标识列)
    DapperPlusManager.Entity<YourEntity>()
        .Table("YourDatabaseTable")
        .Identity(x => x.YourPrimaryKeyField);

    // 执行批量合并
    connection.BulkMerge(yourEntityList);
}

关于BulkInsert+BulkUpdate组合的补充

如果坚持用这种方式实现,逻辑上是可行的,但效率低于原生BulkMerge(因为会发起两次数据库请求),大致步骤为:

  • 先查询数据库中已存在的主键集合,从待处理列表中拆分出「新增记录」和「更新记录」
  • 对新增记录调用BulkInsert
  • 对更新记录调用BulkUpdate

但还是优先推荐直接配置主键后的BulkMerge,代码更简洁,性能更优。

内容的提问来源于stack exchange,提问作者borgy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:44:55