Вкратце, вы не можете получить доступ к какой-либо модели сущности или классу, связанному с контекстом базы данных, внутри кода класса миграции.
Это потому, что класс миграции просто описывает преобразование модели, а не выполняет его. Например, он также используется инструментами EF Core для поиска различий в моделях, которые затем используются для создания новой миграции.
Кроме того, модель сущности (классы / свойства CLR) может сильно отличаться от той, которой они были, когда миграция была создана - ваш код всегда содержит последнюю версию, поэтому им нужно хранить информацию о модели - это какой-то альтернативный способ, не используя обычные классы. Для этого они используют метаданные EF Core и API-интерфейсы построителя со строковыми перегрузками для описания старых и новых моделей во время миграции.
Итак, все, что вы можете сделать внутри миграции, - это использовать доступные примитивы или необработанные SQL (который также будет выполняться только при применении миграции).
И вообще, миграции базы данных не должны зависеть от того, кто их выполняет. За исключением случаев, когда вы пытаетесь реализовать сценарий с несколькими арендаторами и несколькими базами данных, но это потребует другого подхода и не обрабатывается должным образом (если вообще обрабатывается) в текущей системе миграции EF Core.
В зависимости от реальной проблемы, существует представляют собой некоторые сложные обходные пути со специальными заполнителями (или аннотациями) в метаданных EF Core и настраиваемым генератором SQL или другой службой, заменяющей EF Core, но их следует использовать с осторожностью, поскольку они полагаются на внутренние компоненты EF Core, которые меняются очень часто, поэтому необходимо синхронизировать c.