У меня есть тест и live db. Для тестирования db-миграций я использую синтаксис Add-Migration ...
и Update-Database
в консоли диспетчера пакетов. Но для live db я хочу сделать это программно, когда приложение запущено.Entity Framework Core применяет миграцию программно
Следующий код не помог мне:
context.Database.Migrate();
У меня есть ошибка Invalid object name 'TempTenants'
, когда я пытаюсь добавить запись в таблицу, которая не существует. Это моя новая таблица.
Но у меня есть _EFMigrationsHistory
стол. И есть все мои миграции, даже те, которые не применялись. Но я не вижу новую таблицу.
У меня будет тот же результат, если я вручную удалю таблицу из теста db и попытаюсь воспроизвести ошибку.
Итак, context.Database.Migrate();
создает только новый db со всеми миграциями, если он не существует, но не обновляет (применять миграции) существующий db.
Могу ли я это сделать? И как я могу это разрешить?
Пожалуйста, уточните, что «это меня не помогло». Зачем? Что случилось? Сообщение об ошибке? Также был создан ваш db, также созданный миграциями (есть ли таблица '__EFMigrationsHistory')? – Tseng
@Tseng Я обновил свой вопрос, посмотри на него, пожалуйста. –
Исключение во время запуска? Что читают журналы? Имеет ли пользователь достаточные права на запись на сервере базы данных? (ALTER/CREATE) – Tseng