實體框架7 - 在遷移結束時運行種子

c# entity-framework entity-framework-core

我有一個遷移類:

public partial class TestMigration : Migration
{
    protected override void Up(MigrationBuilder db)
    {

在Up方法的最後,我想添加一些數據(種子)。 MigrationBuilder公開了一些方法,也是Sql(),但我想使用EF。

我可以在這裡註入DbContext並做一些事嗎?

熱門答案

實體框架核心2.1開始 ,現在有一種新的種子數據播種方法。在您的DbContext類中重寫OnModelCreating

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>().HasData(new Blog { BlogId = 1, Url = "http://sample.com" });
}

對於相關實體,使用匿名類並指定相關實體的外鍵:

modelBuilder.Entity<Post>().HasData(
    new {BlogId = 1, PostId = 1, Title = "First post", Content = "Test 1"},
    new {BlogId = 1, PostId = 2, Title = "Second post", Content = "Test 2"});

請注意,在OnModelCreating方法和Update-Database中輸入此數據後,您需要運行添加遷移以更新數據。

官方文檔已更新



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow