我正在使用Entity Framework Code First遷移,並且我有一個場景,我想運行一組集成測試。每次運行測試,我想重新創建數據庫,並適用所有遷移EF 5,Code First - 創建一個新數據庫並以編程方式運行所有遷移
的步驟應該是:
- 除去現有的測試數據庫(如果有的話)
- 創建一個新的測試數據庫和應用所有遷移
- 種子數據
這是我添加遷移到現有的項目,我用啓用的遷移命令來創建一個「InitialCreate」移民日at包含將所有表添加到我的數據庫的代碼。
的代碼在我的自定義IDatabaseInitializer
如下:
public void InitializeDatabase(MyContext context)
{
//delete any existing database, and re-create
context.Database.Delete();
context.Database.Create();
//apply all migrations
var dbMigrator = new DbMigrator(new Configuration());
dbMigrator.Update();
//seed with data
this.Seed(context);
context.SaveChanges();
}
我InitialCreate遷移的Up
方法是沒有得到這個代碼調用,這是不是我的預期。相反,所有表格都是在調用Database.Create()
方法時創建的。我需要InitialCreate遷移才能運行,因爲我有額外的代碼來創建存儲過程。
所以我的問題是,我如何以編程方式創建一個新的數據庫並運行所有遷移(包括InitialCreate遷移)?