在遷移期間播種資料

啟用和建立遷移後,可能需要在資料庫中初始填充或遷移資料。有幾種可能性,但對於簡單的遷移,你可以在呼叫 enable-migrations 後建立的檔案 Configuration 中使用方法’Seed()’。

Seed() 函式檢索資料庫上下文作為唯一引數,你可以在此函式中執行 EF 操作:

protected override void Seed(Model.DatabaseContext context);

你可以在 Seed() 內執行所有型別的活動。如果發生任何故障,則會回滾完整的事務(甚至應用的修補程式)。

僅當表為空時才建立資料的示例函式可能如下所示:

protected override void Seed(Model.DatabaseContext context)
{
    if (!context.Customers.Any()) {
        Customer c = new Customer{ Id = 1, Name = "Demo" };
        context.Customers.Add(c);
        context.SaveData();
    }
}

EF 開發人員提供的一個很好的功能是擴充套件方法 AddOrUpdate()。此方法允許基於主鍵更新資料或插入資料(如果它尚不存在)(該示例來自 Configuration.cs 的生成原始碼):

protected override void Seed(Model.DatabaseContext context)
{
    context.People.AddOrUpdate(
      p => p.FullName,
      new Person { FullName = "Andrew Peters" },
      new Person { FullName = "Brice Lambson" },
      new Person { FullName = "Rowan Miller" }
    );
}

請注意,在應用最後一個補丁後呼叫 Seed() 。如果需要在修補程式期間遷移或播種資料,則需要使用其他方法。