我必须向多个表(大约 30 个表)中执行批量插入(大约 50-100 行), 其中一些表与外键相关。 我想通过使用 Entity Framework (EF)来做到这一点。 但我希望这种情况发生在最小的数据库命中,而不是为每个表调用 context.SaveChanges() 。 EF 有什么办法可以做到这一点吗?如果是这样,请告诉我。 提前致谢!
最佳答案
Entity Framework
不提供Bulk
功能。
对于要保存的每一行,都需要进行数据库往返。
<小时/>免责声明:我是 Entity Framework Extensions 的所有者
该库不是免费的,但允许您执行BulkSaveChanges
,其工作方式类似于SaveChanges
,但速度更快:
- 批量保存更改
- 批量插入
- 批量删除
- 批量更新
- 批量合并
示例
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);
// Customize Bulk Operations
context.BulkInsert(customers, options => {
options => options.IncludeGraph = true;
});
context.BulkMerge(customers, options => {
options.ColumnPrimaryKeyExpression =
customer => customer.Code;
});
关于c# - 如何使用 Entity Framework 批量插入与外键相关的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47365584/