使用 EFCore.BulkExtensions 时是不是需要调用 SaveChanges
Posted
技术标签:
【中文标题】使用 EFCore.BulkExtensions 时是不是需要调用 SaveChanges【英文标题】:Do I need to call SaveChanges when using EFCore.BulkExtensions使用 EFCore.BulkExtensions 时是否需要调用 SaveChanges 【发布时间】:2019-02-10 06:41:43 【问题描述】:我开始使用 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);
【问题讨论】:
【参考方案1】:链接中的页面包含以下内容
在幕后使用 SqlBulkCopy 进行插入,更新/删除将 BulkInsert 与原始 Sql MERGE (MsSQL 2008+) 结合在一起。
所以答案是否定的,您不需要调用SaveChanges
,因为 EFCore.BulkExtensions 直接与数据库 (SqlServer) 一起工作。您传递的实体甚至可能不会附加(跟踪)到上下文。它使用上下文来获取实体模型元数据和连接/事务信息。
【讨论】:
以上是关于使用 EFCore.BulkExtensions 时是不是需要调用 SaveChanges的主要内容,如果未能解决你的问题,请参考以下文章