Можно ли иметь условный код миграции 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")
...