使用 EFCore.BulkExtensions 时是否需要调用 SaveChanges

Do I need to call SaveChanges when using EFCore.BulkExtensions

我开始使用 EFCore.BulkExtensions 进行 ef 批量操作,效果非常好。

(参见 https://github.com/borisdj/EFCore.BulkExtensions/

我是否还需要调用 SaveChanges:

        using (var db = new ReportingContext())
        {
            db.BulkInsertOrUpdate(entities);
            db.SaveChanges();
        }

或者这就足够了?

        using (var db = new ReportingContext())
        {
            db.BulkInsertOrUpdate(entities);
        }

来自 link 的页面包含以下内容

Under the hood uses SqlBulkCopy for Insert, for Update/Delete combines BulkInsert with raw Sql MERGE (MsSQL 2008+).

所以答案是否定的,您不需要调用 SaveChanges 因为 EFCore.BulkExtensions 直接与数据库 (SqlServer) 一起工作。您传递的实体甚至可能不会附加(跟踪)到上下文中。它仅使用上下文来获取实体模型元数据和 connection/transaction 信息。