簡體   English   中英

EF核心種子遷移:重新播種

[英]EF Core Seed Migrations: reseeding

我熟悉並一直在使用EF Core 2.1遷移和播種。 但是,我不清楚如何將種子遷移到新的(更改的)版本。

因此,在應用程序的版本1中,我有:

modelBuilder.Entity<Category>().HasData(
  new Category[]
  {
    new Category() { Id = 1, Name = "Category A" },
    new Category() { Id = 2, Name = "Category B" },
    new Category() { Id = 3, Name = "Category C" }
  });

用戶一直在這些類別下添加項目,即

public class Category {
    public List<UserItem> Items {get; set;}
}

僅供參考:Xamarin Forms-因此數據庫是每個用戶設備上的Sqlite數據庫。

現在,我發布版本2,類別已更改,但是我不想丟失任何現有的用戶數據。

現在,類別種子數據如下所示:

modelBuilder.Entity<Category>().HasData(
  new Category[]
    {
      new Category() { Id = 1, Name = "Category A" },
      new Category() { Id = 2, Name = "Category B has a new name" },
      // Category C has been merged with Category B
    });

類別A保持不變,B有了新名稱,C已被刪除,並且C項現在需要在類別B下。

如何在EF Core遷移中實現這一點,以將現有UserItems數據持久保存在新類別下(請注意,由於每個用戶都有自己的數據庫,所以我只能使用EF運行時context.Migrate()進行遷移)?

在對HasData()參數進行更改后,只需添加新的遷移即可處理類別A和類別B的更改。

但是,將子實體從類別C移到類別B時,將需要在添加遷移之后手動對其進行編輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM