我試圖創建一個服務調用,將EF代碼第一個數據庫更新到最新版本。但是,它總是嘗試(並且明顯失敗)執行所有遷移,無論它們是否已被執行。DbMigrator嘗試執行每次遷移,未檢測到執行的遷移
這裏是我的代碼:
var config = new DbMigrationsConfiguration<MyContext>();
config.MigrationsAssembly = typeof (MyContext).Assembly;
config.MigrationsNamespace = "Context.Migrations";
//This had no effect
//config.SetHistoryContextFactory(connectionString.ProviderName, (connection, s) => new HistoryContext(context.Database.Connection, "dbo"));
var migrator = new DbMigrator(config);
//This gets every single migration, even the ones already executed before
var migrations = migrator.GetPendingMigrations();
//This gets 0 migrations
var existing = migrator.GetDatabaseMigrations();
//This gets all migrations
var other = migrator.GetLocalMigrations();
//This returns true! So it knows all the migrations are already executed
var differ = context.Database.CompatibleWithModel(true);
//This will throw an exception because it's trying to create existing tables!
migrator.Update();
我可以證實,遷移歷史表中包含[DBO] [__ MigrationHistory]引用所有的老移民。
我檢查了遷移器中的連接字符串。我也嘗試手動設置歷史上下文工廠,以防其他地方沒有結果。另外,直接從控制檯運行update-database可以工作,並且沒有掛起的更新。
任何幫助表示讚賞
這就是它!當我獲准批准時,您的積分將在約21小時內抵達。 –
Tbh我已經放棄並改變了我的整個程序。非常感謝! – Charbel