使用 Azure 的代码优先迁移进行批量插入

本文关键字:插入 迁移 Azure 代码 使用 | 更新日期: 2023-09-27 17:55:23

我们有很多数据需要加载到许多表中。据我所知,我们有两种选择:

  1. 将数据作为配置类种子方法的一部分包括在内问题1.a. 这会很慢,并且需要编写大量 C# 代码)

  2. 将批量插入与代码优先迁移一起使用 - 更快,可能是更好的解决方案。问题2.a.处理作为种子的一部分加载到相同表中的其他数据可能会很棘手。2.b.它需要打开 SQL 标识插入。

什么解决方案是最好的,如果是 2,我如何使用代码优先迁移进行批量插入以及如何解决这些问题?

使用 Azure 的代码优先迁移进行批量插入

绕过

EF 并使用 ADO.NET/SQL 绝对是批量上传数据的好方法。最佳方法取决于是希望将数据作为迁移的一部分插入,还是仅希望在应用启动时运行的逻辑插入。

  • 如果您希望将其作为迁移的一部分插入(这可能很好,因为这样您就不必担心数据是否存在等防御性检查),那么您可以使用 Sql(string) 方法来执行 sql,它使用您想要的任何格式和 sql 功能(包括打开/关闭IDENTITY_INSERT)。在 EF6.1 中,还有一个重载,它允许您轻松运行 .sql 文件,而不是将代码中的所有内容都作为字符串。
  • 如果要在应用启动时执行此操作,则只需创建上下文的实例,然后访问Database.Connection以获取原始 SqlConnection 并直接使用 ADO.NET 插入数据。