[英]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.