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

What is the proper way to fix data on the database using .net Core?

我们必须在当前数据库中添加一些行。我的老板告诉我为此使用迁移(我们有一个 .net 核心应用程序,并且正在使用 EF 核心 1.1.1)。我不确定如何进行,我的理解是迁移是 "database schema modifications" 的事情,而不是 "data update" 的事情。我也知道种子存在,但我认为它们 "first/original data filling" 在项目中完成一次,而不是在任何随机时刻。 那么,我应该使用种子还是迁移?是否存在用于简单数据操作的迁移?或者有第三种正确的方法吗?

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

上的文档

关于stack overflow已经有类似的建议了,见 Entity Framework - Migrations - Code First - Seeding per MigrationBest way to incrementally seed data in Entity Framework 4.3

做初始种子时,您可以只覆盖 Configuration.cs 中的 Seed 方法,参见 here

您可以创建自己的 Up/Down 覆盖并告诉它根据需要使用 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否则从项目目录中。当然请记住,我也不知道这是否是最佳解决方案。