Настройка параметров командной строки EF Core

#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.