从ASP.NET MVC中的现有数据库生成种子代码

阿尔曼·比马托夫(Arman Bimatov)

我想知道是否有人遇到过类似的挑战:

我有一个数据库,其中包含一些从Excel文件进​​行ETL(导入和转换)的数据。在我的ASP.NET MVC Web应用程序中,我使用“代码优先”方法,并在每次数据库更改时都删除/创建:

#if DEBUG
  Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDataContext>());
#endif

但是,由于数据库中的数据丢失,因此我不得不再次将其ETL,这很烦人。

因为,仅在更改模型时才会删除数据库,所以无论如何我都必须调整ETL。但是我宁愿更改我的数据库种子代码。

假设模型和SQL表都是最新的,是否有人知道如何获取数据库的内容并生成种子代码?

编辑1:我计划使用自动生成的Configuration.cs及其种子方法,然后使用AddOrUpdate()方法将数据添加到数据库中:这是Microsoft的迁移教程(特别是“设置种子方法”部分) )。

科林

播种数据的另一种方法是在Up迁移中将其作为sql运行。

我有将读取一个SQL文件并运行它的代码

using System;
using System.Data.Entity.Migrations;
using System.IO;

public partial class InsertStandingData : DbMigration
{
    public override void Up()
    {
        var baseDir = AppDomain.CurrentDomain
                               .BaseDirectory
                               .Replace("\\bin", string.Empty) + "\\Data\\Sql Scripts";

        Sql(File.ReadAllText(baseDir + "\\StandingData.sql"));
    }

    public override void Down()
    {
        //Add delete sql here
    }
}

因此,如果您的ETL为您生成了sql,则可以使用该技术。

在Up方法中执行此操作的优点是

  1. 这比使用数据库要快,AddOrUpdate因为AddOrUpdate每次调用数据库以获取任何现有实体时都会查询数据库。
  2. 通常,您从已知状态(例如,空表)出发,因此您可能不需要检查数据是否已经存在。注意:为确保这一点,您应该删除Down方法中的数据,以便可以将其撕裂并再次备份。
  3. Up方法不会在每次应用程序启动时运行。

Seed方法提供了便利-它具有(!?)优点,它可以在应用程序每次启动时运行

但是,如果您希望从那里运行sql,请使用ExecuteSqlCommand而不是Sql

string baseDir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin", string.Empty) 
              + "\\Data\\Sql Scripts";
string path = Path.Combine(baseDir, "StandingData");
foreach (string file in Directory.GetFiles(path, "*.sql"))
{
    context.Database.ExecuteSqlCommand(File.ReadAllText(file));
}

参考:

增量种子数据的最佳方法

准备数据库部署

数据库初始化程序和迁移种子方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从ASP.NET MVC中的现有数据库生成种子代码

来自分类Dev

实体框架7将现有数据库表转换为asp.net mvc中的代码第一类6

来自分类Dev

如何在现有数据库中创建ASP.Net Identity表?

来自分类Dev

没有数据库的ASP.NET MVC

来自分类Dev

手动编写ASP.Net Identity现有数据库脚本

来自分类Dev

将ASP.NET身份集成到现有数据库

来自分类Dev

如何在现有数据库中集成ASP.NET身份表

来自分类Dev

是否可以在Visual Studio中连接现有的本地数据库并使用ASP.NET mvc Core在Web上生成数据?

来自分类Dev

如何将ASP.NET MVC5身份验证添加到现有数据库

来自分类Dev

通过使用现有数据库的ASP.NET MVC 5 Identity 2.0和OWIN两因素身份验证

来自分类Dev

当数据库属性与 excel ASp.NET / core 中的第一列不匹配时,将数据从 Excel 导入现有数据表

来自分类Dev

ASP.NET身份数据库种子

来自分类Dev

ORA-00955名称已由现有对象使用更新数据库代码第一次迁移ASP.NET MVC时出错

来自分类Dev

如何从ASP.NET MVC 5中的代码创建数据库?

来自分类Dev

如何在具有数据库调用的ASP.net MVC中正确测试控制器

来自分类Dev

如何在具有数据库调用的ASP.net MVC中正确测试控制器

来自分类Dev

在ASP.Net MVC中管理数据库连接

来自分类Dev

为什么asp.net Identity api中的所有数据库访问方法都标记为异步

来自分类Dev

访问的用户在没有数据库的情况下在ASP.NET中计数

来自分类Dev

在Windows Server上发布带有数据库的ASP.NET

来自分类Dev

访问的用户在没有数据库的情况下在ASP.NET中计数

来自分类Dev

使用WebForms的ASP.Net Identity到现有SQL数据库

来自分类Dev

使用EF6将文档存储在数据库ASP.NET MVC5中-代码优先

来自分类Dev

代码优先在数据库(ASP.NET MVC)中添加默认字段值

来自分类Dev

ASP Net MVC Oracle数据库无法检索数据

来自分类Dev

SQL的.NET代码优先迁移:将迁移添加到现有数据库

来自分类Dev

ASPNETBOILERPLATE .Net Core 模板 - 现有数据库代码示例请求

来自分类Dev

Asp.Net MVC代码优先:从其他数据库填充下拉选项

来自分类Dev

如何从数据库ASP.Net MVC生成和呈现URL

Related 相关文章

  1. 1

    从ASP.NET MVC中的现有数据库生成种子代码

  2. 2

    实体框架7将现有数据库表转换为asp.net mvc中的代码第一类6

  3. 3

    如何在现有数据库中创建ASP.Net Identity表?

  4. 4

    没有数据库的ASP.NET MVC

  5. 5

    手动编写ASP.Net Identity现有数据库脚本

  6. 6

    将ASP.NET身份集成到现有数据库

  7. 7

    如何在现有数据库中集成ASP.NET身份表

  8. 8

    是否可以在Visual Studio中连接现有的本地数据库并使用ASP.NET mvc Core在Web上生成数据?

  9. 9

    如何将ASP.NET MVC5身份验证添加到现有数据库

  10. 10

    通过使用现有数据库的ASP.NET MVC 5 Identity 2.0和OWIN两因素身份验证

  11. 11

    当数据库属性与 excel ASp.NET / core 中的第一列不匹配时,将数据从 Excel 导入现有数据表

  12. 12

    ASP.NET身份数据库种子

  13. 13

    ORA-00955名称已由现有对象使用更新数据库代码第一次迁移ASP.NET MVC时出错

  14. 14

    如何从ASP.NET MVC 5中的代码创建数据库?

  15. 15

    如何在具有数据库调用的ASP.net MVC中正确测试控制器

  16. 16

    如何在具有数据库调用的ASP.net MVC中正确测试控制器

  17. 17

    在ASP.Net MVC中管理数据库连接

  18. 18

    为什么asp.net Identity api中的所有数据库访问方法都标记为异步

  19. 19

    访问的用户在没有数据库的情况下在ASP.NET中计数

  20. 20

    在Windows Server上发布带有数据库的ASP.NET

  21. 21

    访问的用户在没有数据库的情况下在ASP.NET中计数

  22. 22

    使用WebForms的ASP.Net Identity到现有SQL数据库

  23. 23

    使用EF6将文档存储在数据库ASP.NET MVC5中-代码优先

  24. 24

    代码优先在数据库(ASP.NET MVC)中添加默认字段值

  25. 25

    ASP Net MVC Oracle数据库无法检索数据

  26. 26

    SQL的.NET代码优先迁移:将迁移添加到现有数据库

  27. 27

    ASPNETBOILERPLATE .Net Core 模板 - 现有数据库代码示例请求

  28. 28

    Asp.Net MVC代码优先:从其他数据库填充下拉选项

  29. 29

    如何从数据库ASP.Net MVC生成和呈现URL

热门标签

归档