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

如何在Entity Framework Core插入数据时跟踪成功插入数量并返回该值?

如何跟踪EF Core插入操作的成功记录数量?

当然可以,而且实现起来很简单:EF Core的SaveChangesAsync()方法本身就会返回本次操作中受影响的数据库行数,对于你的插入场景来说,这个数值就是成功插入的记录数。

你可以直接修改方法的返回类型,接收并返回SaveChangesAsync()的结果。另外注意你代码里的entry.State = EntityState.Added是多余的——Add()方法已经自动把实体的状态设置为Added了,没必要手动重复设置。

优化后的代码如下:

public async Task<int> InsertInactiveUsersAsync(IEnumerable<User> users)
{
    // 用AddRange批量添加,比循环Add更高效
    _context.Set<User>().AddRange(users);
    // SaveChangesAsync返回受影响的行数,也就是成功插入的记录数
    return await _context.SaveChangesAsync();
}

补充说明:

  • 使用AddRange()替代循环调用Add(),能减少EF Core上下文的状态跟踪开销,批量操作的性能更优。
  • 如果插入过程中没有抛出异常,返回的数值应该等于传入的users集合的元素总数;如果有实体因验证失败、数据库约束冲突等问题无法插入,EF Core会直接抛出异常,此时不会有部分数据插入(默认是事务性操作)。

内容的提问来源于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 09:04:58