我开始使用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);
}
答案 0 :(得分:4)
链接中的页面包含以下内容
引擎盖下使用SqlBulkCopy进行插入,更新/删除将BulkInsert与原始Sql MERGE(MsSQL 2008+)结合使用。
因此答案是否定的,您无需调用SaveChanges
,因为EFCore.BulkExtensions可直接与数据库(SqlServer)一起使用。您传递的实体甚至可能没有附加(跟踪)到上下文。它仅使用上下文来获取实体模型元数据和连接/事务信息。