我们必须在当前数据库中添加一些行。我的老板告诉我使用迁移(我们有一个.net核心应用程序,并使用EF核心1.1.1)。我不确定如何继续,我理解迁移是一个"数据库架构修改"事情,而不是"数据更新"事情。我也知道种子存在,但我认为它们是"第一/原始数据填充"在项目中完成一次,而不是随意的。 那么,我应该使用种子还是应该使用迁移?是否存在简单数据操作的迁移?或者有第三种正确的方法吗?
答案 0 :(得分:1)
看起来最常见的方法是在Up
迁移中使用纯SQL - 请参阅Data Motion / Custom SQL上的文档
堆栈溢出已有类似的建议,请参阅 Entity Framework - Migrations - Code First - Seeding per Migration和 Best 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
否则来自项目目录中的。当然要记住,我也不知道这是否也是最佳解决方案。