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

如何在Entity Framework Core 6中使用C#实现SQL批量插入?

Entity Framework Core 6的批量插入支持及优化方案

EF Core 6原生没有提供专门的批量插入API,但可以通过优化代码实现高效的批量插入,避免你当前代码里的性能问题。

现有代码的问题

你现在的写法是在循环里每添加一条数据就调用一次SaveChangesAsync,这会导致多次数据库往返,数据量越大性能越差,完全没必要这么做。

优化方案

1. 批量添加后单次提交(原生EF Core 6支持)

把所有实体添加到上下文后,只调用一次SaveChangesAsync,EF Core会一次性生成多条INSERT语句提交到数据库,大幅减少数据库交互次数:

public async Task<List<Application>> InsertApplicationAsync(List<Application> applications)
{
    foreach (var app in applications)
    {
        var application = new Application();
        application.Id = Id; // 注意:如果Id是数据库自增列,无需手动赋值,根据你的实体配置调整
        application.Identifier = Identifier;
        await _context.AddAsync(application);
    }
    await _context.SaveChangesAsync();
    return applications;
}

这种方式虽然不是生成单条批量INSERT语句,但已经比循环提交高效很多。

2. 使用第三方库实现真正的单条批量插入

如果需要生成INSERT INTO ... VALUES (...), (...), (...)这种原生批量插入语句,可以使用第三方扩展库(比如EFCore.BulkExtensions),这类库能直接生成高效的批量插入SQL,性能比原生批量提交更优,但不属于EF Core 6原生功能。

另外补充:EF Core 7及后续版本新增了ExecuteUpdate和ExecuteDelete的批量更新/删除API,但批量插入依然没有原生支持,还是需要用上述方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:17