C # Code-First миграция, вверх / вниз? - PullRequest
39 голосов
/ 19 марта 2012

Начал использовать команду add -igration в консоли диспетчера пакетов для генерации миграций для моей модели. Мой вопрос, метод вверх и вниз. Я предполагаю, что целью метода down является удаление всех зависимостей и удаление таблиц, если они уже есть в базе данных? Также, что метод down будет выполнен перед методом up? В этом случае метод up является обратным: создавать / обновлять таблицы / индексы и т. Д.

Иногда, когда я использую это, метод down получает много таблиц create, которые затем удаляются? Недавно было создано и удалено множество таблиц, и почти то же самое произошло в методе up. Почему?

Ответы [ 3 ]

69 голосов
/ 19 марта 2012

Метод Up обновляет вашу базу данных с ее текущего состояния (представленного предыдущей миграцией) до состояния, ожидаемого текущей миграцией кода. Метод Down выполняет обратную операцию - он удаляет все изменения из текущей миграции и возвращает базу данных в состояние, ожидаемое предыдущей миграцией. Это похоже на установку / удаление миграции. Только один из этих методов выполняется при вызове update-database. Чтобы использовать метод Down, вы должны явно указать целевой перенос для вашего обновления. Если целевая миграция является старой, API миграции автоматически использует метод Down и понижает вашу базу данных.

25 голосов
/ 26 июля 2014

Просто чтобы добавить в @Ladislav Mrnka. Мне нужно было использовать Down () в первый раз, и мне потребовалось некоторое время, чтобы заставить его работать, поэтому:

Update-Database -Target:201407242157114_46

Где моя последняя миграция - 47 (где были добавлены новые вещи). Вот хорошее объяснение о том, как выполнить откат базы данных и удалить неудачную миграцию.

Надеюсь, это поможет другим ученикам мага:)

0 голосов
/ 23 апреля 2019

Здесь метод Up обновит вашу базу данных с ее текущего состояния до нового ожидаемого вами состояния.Метод Down будет делать обратное.Он вернет вашу базу данных в состояние, ожидаемое от предыдущей миграции

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