使用迁移实体框架核心添加数据而无需指定ID

时间:2018-09-18 08:55:53

标签: c# .net-core entity-framework-core

我想使用EF迁移在数据库中添加一些数据。事实是所有ID都是自动生成的。我找到了使用EF Core实现此目标的标准方法,如下所示:

modelBuilder.Entity<TypeNote>()
    .HasData(
    new TypeNote { Id = 1, Name = "General" },
    new TypeNote { Id = 2, Name = "E-mail" },
    new TypeNote { Id = 3, Name = "Meeting" },
    new TypeNote { Id = 4, Name = "Reminder" },
    new TypeNote { Id = 5, Name = "Telephone" },
    new TypeNote { Id = 6, Name = "Visit" }
);

我的问题是我不想指定Id,但似乎没有其他方法可以使用HasData方法。

您知道使用迁移在数据库内部添加数据的另一种方法吗?

3 个答案:

答案 0 :(得分:2)

我找到了一种在迁移过程中进行插入的方法:

        migrationBuilder.InsertData(
            table: "TypeNote",
            columns: new[] { "Name" },
            values: new object[,]
            {
                { "Test" },
                { "Test1" }
        });

事实是,我想在迁移过程中访问dbContext。这是不可能的,因为数据库正在更新。

答案 1 :(得分:0)

这是 HasData 的标准。自动生成的字段不会使用 HasData 方法生成。

请查看此EntityFrameworkCore issue

答案 2 :(得分:0)

我认为您要查找的内容称为“种子数据”

请查看此Microsoft Doc,了解如何将种子数据添加到数据库中,并让我知道您是否正在寻找该内容。