使用 EntityFramework Extended 批量插入

2023-12-29

根据this https://code.msdn.microsoft.com/entity-framework-batch-994cd739,可以使用以下代码在实体中批量插入:

 var customers = GetCustomers();   
 db.Customers.AddRange(customers);   
 db.SaveChanges();  

我使用 SQL Profiler 来验证执行了多少插入查询,并且我看到列表中的每个元素都有一个插入。

Why?


AddRange

添加范围不会执行 BulkInsert,它只是在所有实体添加到集合后检测更改一次。

DetectChange 方法可能非常慢。

See: 实体框架 - DetectChanges 性能 http://entityframework.net/improve-ef-detect-changes-performance

正如您所注意到的,它将实体一一保存在数据库中,这是非常慢的。

EF扩展

不再支持该库,并且没有批量插入功能。

批量插入库

支持批量插入的主要库有以下三个:

  • 实体框架扩展 http://entityframework-extensions.net/ (付费但支持)
  • EntityFramework.BulkInsert https://www.nuget.org/packages/EntityFramework.BulkInsert-ef6/ (不再支持)
  • EFU实用程序 https://www.nuget.org/packages/EFUtilities/ (不再支持)

请注意,两个免费库都不支持所有继承和关联。


免责声明: 我是该项目的所有者实体框架扩展 http://entityframework-extensions.net/

除了批量插入之外,该库还允许您执行所有批量操作:

  • 批量保存更改
  • 批量插入
  • 批量更新
  • 批量删除
  • 批量合并
  • 批量同步

Example:

// 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 Primary Key
context.BulkMerge(customers, operation => {
   operation.ColumnPrimaryKeyExpression = 
        customer => customer.Code;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EntityFramework Extended 批量插入 的相关文章

  • 多维向量

    如何创建 2D 矢量 我知道在二维数组中 我可以这样表达 a 0 1 98 a 0 2 95 a 0 3 99 a 0 4 910 a 1 0 98 a 1 1 989 a 1 2 981 a 1 3 987 如何使用 C STL Vect
  • 读取输入消息时出现 I/O 错误;嵌套异常是 java.io.IOException:流已关闭

    这是我的控制器 RestController RequestMapping reclamacao public class ClaimController Autowired private ClaimRepository claimRep
  • 向 std::cout 添加“提示”消息的最佳方法

    我正在寻找向所有消息添加自定义初始消息的最佳方法std cout or std cerr 打印到控制台 文件输出 例如 如果我设置这个自定义提示消息将是字符串 Log 那么一个经典的 std cerr lt lt This is a log
  • 如何考虑不同的实施需求?

    假设我有一个包含两个具体类的接口 一 具体需要落实IDisposable 是否需要修改接口来实现IDisposable为了一个类的利益 还是接口的使用者必须执行运行时检查以确保可处置性 我认为应该修改接口 因为它是一个简单的更改 特别是如果
  • 我收到“缺少 using 指令或程序集引用”的消息,并且不知道出了什么问题

    我试图允许用户将数据输入到将添加到 web config 文件中的文本框中 我已将相关行添加到 web config 文件中 但是当我创建此类时 一切都会出错 每当我尝试运行我的应用程序时 我总是收到是否缺少 using 指令或程序集引用错
  • 如何在WPF ListView中显示时间日志的内容?

    我一直在寻找答案 但我还没有真正找到答案 我知道逻辑 但我只是不知道如何实现它 这是我的时间日志 No Mchn EnNo Name Mode IOMd DateTime 00001 1 00001234 1 0 2004 01 01 01
  • Discord OAuth 代码使用

    我对使用 Discord API 与 Discord 进行交互感兴趣 我会把他们的文档描述为 稀疏 但也许我只是没有在正确的地方寻找 我的大部分信息都来自这个页面 https discordapp com developers docs t
  • 使用 linq 检查记录是列表中的最后一个还是第一个

    我有一个对象列表 我想确定用户何时会获得列表中的第一个或最后一个对象 这样我就可以禁用页面上的一些按钮 例如 我可能有一些布尔值 如果请求的对象是列表中的最后一个或第一个 那么它将返回true 否则false 任何想法 如果您的对象列表确实
  • Excel 在 CSV 导出中添加额外的引号

    我最近创建了一个应用程序 它通过 CSV 将项目添加到数据库 添加项目后 我意识到我的很多值都有不需要的额外引号 这扰乱了我的排序 问题是 当从 Excel 导出到 CSV 时 Excel 会向我所有已包含引号的值添加额外的引号 我在下面展
  • 带有本地 SQL Server CE DLL 的实体框架代码优先“未找到 ADO.NET 提供程序”

    我正在编写一个使用 SQL Server CE 4 0 文件的 C 应用程序 这些文件通过代码优先通过实体框架 6 0 进行访问 应用程序需要能够使用本地 dll 进行 SQL Server CE 连接 即应用程序需要可 XCOPY 部署
  • 如何使用适用于 .NET 的 Azure 管理库将 Azure SQL 数据库还原到某个时间点

    下面是使用Azure管理库创建数据库 我想知道如何将现有数据库恢复到Azure上的时间点 Crate Authenticate var credentials SdkContext AzureCredentialsFactory FromS
  • 为什么 if (2 < 9 < 3) 为真?

    这是我备考时的一道题 int val 0 int x 0 int y 1 if x lt val lt y printf true else printf false 为什么这是真的 我尝试改变x and val它忽略了这些变化 只要y大于
  • 最好的 C# 分析器?

    Merged https meta stackexchange com questions 158066 what is a merged question with 有哪些好的 NET 分析器 questions 3927 what ar
  • C#:在这种情况下我将如何过滤掉不需要的命名空间?

    这更像是一个与语言无关的问题 而不是特定于 C 的问题 但由于它涉及命名空间 我认为我应该将其标记为与 NET 相关 假设您有一堆代表名称空间的字符串 System System Windows System Windows Input S
  • 执行类的成员函数

    我正在尝试以一种方式试验 C 11 线程 它接受类的成员函数作为线程构造函数的参数 如下面第 20 行标记为 的第一个代码片段所示 类定义在第二个代码片段中给出 编译此代码时 我收到第三个片段中显示的一堆错误 谁能告诉我我做错了什么 谢谢
  • WCF JSON 输出添加了不需要的引号和反斜杠

    好吧 所以我很困惑为什么我正在构建的字符串 神奇地 添加了额外的字符 首先 我看到反斜杠出现在立即窗口中 ID 1 F1 lala F2 hehe ID 2 F1 abc F2 def 但是在谷歌上读到这些只是 视觉 并且实际上并不存在于变
  • Windows 上的 C++ 分析器 [重复]

    这个问题在这里已经有答案了 我刚开始使用 C 有时我不知道我的编译器有多喜欢算法的两种不同实现 有没有simple我可以使用工具来查看我的代码执行需要多长时间 编辑 我使用 gcc 编译器 Free 很困 http www codersno
  • SQL 缓存依赖关系的性能问题

    我正在开发一个项目 我们正在考虑将 SQLCacheDependency 与 SQL Server 2005 2008 一起使用 我们想知道这将如何影响系统的性能 所以我们想知道以下问题 SQLCacheDependency 对象 查询通知
  • 显式覆盖和最终 c++0x

    根据维基百科 http en wikipedia org wiki C 11 在此示例中 struct Base virtual void some func float struct Derived Base virtual void s
  • 进程退出时释放绑定端口

    如何确保绑定到端口的套接字在进程退出时正确释放 以便可以重用该端口而无需bind EADDRINUSE 失败 我编写了一个小程序 它只创建一个套接字 将其绑定到一个固定端口 等待连接 然后立即终止 当我重新运行程序时 bind 调用因 EA

随机推荐