【问题标题】:What is the proper way to fix data on the database using .net Core? [closed]使用 .net Core 修复数据库数据的正确方法是什么? [关闭]
【发布时间】:2017-10-04 07:29:00
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    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 否则来自项目目录中。当然请记住,我也不知道这是否是最好的解决方案。

    【讨论】:

      【解决方案2】:

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

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

      在做初始种子时,您可以在 Configuration.cs 中覆盖 Seed 方法,请参阅 here

      【讨论】:

      • EntityFramework Core 的种子不存在...
      猜你喜欢
      • 2012-09-22
      • 2019-04-14
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2019-05-28
      相关资源
      最近更新 更多