Можно ли иметь условный код миграции EF?
У меня есть две среды - разработка и производство. Хранимые процедуры в моем приложении немного различаются для каждой среды, внутренне они используют разные связанные серверы и другие подзапросы, которые специфичны для сервера, но у процедур есть одинаковые входные параметры и столбцы выходных результатов.
Я перенес все процессы в миграции, но когда дело дошло до развертывания, я обнаружил, что мне нужен какой-то условный код миграции для развертывания специфичных для производства хранимых процедур.
Есть ли способ запустить другой код миграции в зависимости от настроек конфигурации или цели проекта, такой как Debug, Release и т. Д.? Кто-нибудь сталкивался с чем-то схожим, когда вам нужен другой код миграции для конкретной среды?
Пожалуйста посоветуй
1 ответ
Вы можете использовать директиву #if в своей миграции следующим образом:
#if Release
Sql("Update...");
#elif Debug
Sql("Delete...");
#endif
Когда вы создаете свое решение, вам просто нужно передать, какую конфигурацию вы строите (Debug, Test, Release и т. Д.).
Я немного опоздал на эту вечеринку, но столкнулся с этим при переходе на EF.Core и хотел обновить только некоторые вещи в разработке. Для этого достаточно хорошо работают переменные среды, например
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development")
...