c# - 如何使用 Entity Framework 批量插入与外键相关的多个表

标签 c# mysql entity-framework

我必须向多个表(大约 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/

相关文章:

entity-framework - Entity Framework 4 Code-First优缺点

c# - C#中的浅拷贝

c# - Facebook C# SDK授权问题

c# - 在 C# 中编译表单

php - 如何删除循环中的行或任何其他方法以显示如下

entity-framework - 如何动态地将实体属性设置为只读?

c# - 在 webview 商店应用程序中调用 Javascript

mysql - 从以下查询中选择每个结果之一

php - 几天后如何将数据从一个表移动到另一个表

c# - 代码优先,当我启用迁移时,我得到 “No context type was found in the assembly ' DOC'”