Как применить частичную миграцию из кода? - PullRequest
6 голосов
/ 24 января 2020

Допустим, у меня всего 3 миграции: A, B и C. Все миграции встроены в код и выполняются из кода (я имею в виду * 1015).

Я хотел бы применить все миграции до заданного уровня (скажем, B), вернуть мне контроль, чтобы я мог делать все, что мне нравится, за рамками EF / migrations / et c. Когда я закончу со своим собственным материалом, тогда выполните полную миграцию (так что в этом случае это будет означать C).

Я знаю, как выполнить полную миграцию из кода :-), но как сказать EF перейти на заданный уровень?

Выполнение всего из кода (C#) крайне важно здесь - SQL сценарии, или запуск внешних инструментов - не go для me.

Для любопытных: вариант использования - я хотел бы подготовить тесты для последней миграции между ними.

1 Ответ

4 голосов
/ 24 января 2020

В соответствии с документацией EF-Core вы должны иметь возможность запустить:

dotnet ef database update Migration_Name

Для обновления базы данных до определенной миграции.

Запуск из кода немного отличается. Вы можете использовать context.Database.Migrate() для применения всех ожидающих миграций. Глядя на исходный код этого метода, мы видим, что он использует базовый сервис IMigrate. Я полагаю, вы могли бы попробовать что-то вроде этого:

_context.Database.GetService<IMigrator>().Migrate("Migration_Name");

Что должно быть таким же, как команда cli, которую я упоминал ранее. В настоящее время у меня нет быстрого способа проверить это, поэтому он может не работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...