У меня есть проект API, который является нормальным запуском приложения ASP.NET Core 2.0.
Это решение также имеет спутниковую сборку, которая содержит наш DbContext.
Открытие командной строки в каталоге сателлитных сборок и попытка выполнить команду CLI, например:
dotnet ef migrations add UserAccountFields
В результате:
Для этого DbContext не настроен поставщик базы данных.
поставщик может быть настроен путем переопределения DbContext.OnConfiguring
метод или с помощью AddDbContext на поставщика услуг приложения.
Что имеет смысл, поскольку для него нет действительной конфигурации для чтения. Похоже, что CLI не позволяет указывать провайдера или строку подключения в самой команде. Но вы можете это сделать, когда создаете контекст из существующей базы данных, но сначала мы используем код, поэтому это невозможно.
Если я переключаюсь в каталог проекта корневого приложения и пытаюсь:
dotnet ef migrations add UserAccountFields -c ErsSecurityContext
Я получаю ошибку:
Не найден исполняемый файл, соответствующий команде "dotnet-ef"
Что также имеет смысл, поскольку корневое приложение не содержит ссылок на EF NuGets, и мы не хотим этого.
Наши строки подключения также хранятся в UserSecrets, что еще больше усложняет ситуацию.
Как я могу заставить этот сценарий работать, не приводя к разбросу строк соединения в коде, переопределяя метод OnConfiguring?
Я в тупике. Наша архитектура хороша, но это полный стоп-шоу, и я не знаю, как использовать какой-либо из хороших CLI для эскалации миграции.