Миграции EF Core 2.0 с контекстом в сателлитной сборке и секретами пользователя - PullRequest
0 голосов
/ 02 мая 2018

У меня есть проект 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 для эскалации миграции.

1 Ответ

0 голосов
/ 03 мая 2018

Так что после прочтения по ссылке предоставлен Mark G.

https://github.com/aspnet/EntityFrameworkCore/issues/10806

Теперь я могу создавать миграции, используя это простое изменение команды. Перейдите в каталог, содержащий проект с вашим контекстом и миграциями, откройте командную строку здесь и используйте:

dotnet ef migrations add <migration-name> -c <context-name> --startup-project <relative-path-to-startup-csproj-file>

Это также работает для других команд, таких как:

dotnet ef database update --startup-project <relative-path-to-startup-csproj-file>

dotnet ef migrations remove --startup-project <relative-path-to-startup-csproj-file>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...