Я пытаюсь создать служебный вызов, который обновит первую базу данных 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] ссылается на все старые миграции.
Я проверил строки подключения в мигрите. Я также попытался установить фабрику контекста истории вручную, если он ищет где-то еще без результата. Кроме того, работает обновление базы данных непосредственно из консоли и не сообщает ожидающих обновлений.
Любая помощь приветствуется
Вот оно! Ваши баллы прибудут через ~ 21 час, когда мне будет разрешено их одобрить. –
Tbh Я отказался и изменил всю свою процедуру. Большое спасибо за это! – Charbel