使用.net Core修复数据库数据的正确方法是什么?

时间:2017-05-05 18:08:43

标签: entity-framework entity-framework-core ef-migrations seeding

我们必须在当前数据库中添加一些行。我的老板告诉我使用迁移(我们有一个.net核心应用程序,并使用EF核心1.1.1)。我不确定如何继续,我理解迁移是一个"数据库架构修改"事情,而不是"数据更新"事情。我也知道种子存在,但我认为它们是"第一/原始数据填充"在项目中完成一次,而不是随意的。 那么,我应该使用种子还是应该使用迁移?是否存在简单数据操作的迁移?或者有第三种正确的方法吗?

2 个答案:

答案 0 :(得分:1)

看起来最常见的方法是在Up迁移中使用纯SQL - 请参阅Data Motion / Custom SQL上的文档

堆栈溢出已有类似的建议,请参阅 Entity Framework - Migrations - Code First - Seeding per MigrationBest way to incrementally seed data in Entity Framework 4.3

在执行初始种子时,您只需覆盖Seed Configuration.cs中的/方法即可here

答案 1 :(得分:1)

您可以创建自己的向上/向下覆盖,并告诉它根据需要使用T-SQL创建或插入。这将是一个没有进行架构更改的迁移。虽然下来会删除那些种子项目。

public partial class InsertMigrationRows10 : Migration
{
    protected override void Up( MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql("INSERT INTO SOMETHING(xx, xx, xx)", suppressTransaction: false);
    }
    protected override void Down(MigrationBuilder migrationBuilder)
    {
        //reverse what ever you did in UP
       migrationBuilder.Sql("DELETE SOMETHING ...."); 
    }
}

我认为这就是你要找的东西。并且必须进行Update-Database(PMC)调用以使其运行。 dotnet ef database update否则来自项目目录中的。当然要记住,我也不知道这是否也是最佳解决方案。