#entity-framework-core #ef-core-3.1
#сущность-фреймворк-ядро #ef-core-3.1
Вопрос:
У меня есть ASP.NET Основной проект с уровнем доступа к данным с использованием EF Core 3.1.8, а также с использованием версии 3.1.8 инструментов cli. Уровень представления и уровень доступа к данным находятся в разных проектах. Чтобы запустить команды EF в командной строке, я открываю командную строку разработчика, перехожу к каталогу, содержащему уровень доступа к данным, и выполняю команду, такую как
dotnet ef migrations add MyMigrationName --startup-project ../Site/Site.csproj
или
dotnet ef database update --startup-project ../Site/Site.csproj
Site
здесь это просто заполнитель. Фактическое имя проекта длиннее, и неудобно указывать --startup-project
аргумент каждый раз, когда я хочу запустить команду. Есть ли где-нибудь, где я могу это настроить, чтобы я мог запускать команды более лаконично, например dotnet ef database update
?
Ответ №1:
Создайте файл с именем ef.cmd
в каталоге уровня доступа к данным со следующим содержимым:
@dotnet ef --startup-project ..Site %*
Затем вы можете использовать:
ef migrations add MyMigrationName
или
ef database update
Для полноты картины другим вариантом является использование файлов ответов. Это не так просто, но может быть полезно, когда у вас есть несколько наборов параметров. (например, для нескольких DbContexts)
Создайте файл с именем что-то вроде identity.rsp
со следующим содержимым.
--startup-project=..Site
--context=IdentityContext
И используйте его следующим образом.
dotnet ef database update @identity.rsp
Комментарии:
1. Если вы можете придумать, возможно, лучший способ, пожалуйста, прокомментируйте проблему # 20862 .
2. Для чего нужен файл *.rsp? Это функция командной строки? Я не могу его использовать.
3. Это именно то, что я искал. Спасибо.
4. @WillHuang Я думаю, что это возникла как функция MSBuild . Логика чтения файла встроена в dotnet-ef.