У меня есть сайт, который сначала был создан с использованием базы данных, и я пытаюсь продолжить его разработку на Mac. Обычно я запускал Scaffold-dbContext с помощью диспетчера пакетов консоли в Visual Studio. В версии для Mac этого нет, я пробовал запустить его в Терминале, но это явно не сработало. Можно ли запустить эту команду или мне нужно продолжить разработку в Windows?
Запустите Scaffold-DbContext в Visual Studio для Mac
Ответы (4)
Вот код, работающий для меня на Visual Studio Mac
Установите указанный ниже пакет, используя ссылки для редактирования Visual Studio Mac в проекте или добавьте пакет в файл .csproj.
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design
или с помощью Терминала перейдите к проекту и используйте команду ниже -
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
Теперь проверьте, установлены ли инструменты и EF. Перейдите к месту установки проекта и используйте терминал Mac с командой ниже. Он должен отображать детали структуры сущности
dotnet ef
Теперь создадим контекст БД
dotnet ef dbcontext Scaffold "Server=<servername>,1433;Initial Catalog=<dbName>;Persist Security Info=False;User ID=<userID>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"Microsoft.EntityFrameworkCore.SqlServer -o <directory name>
использованная литература
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db
https://www.learnentityframeworkcore.com/walkthroughs/existing-database
dotnet ef
теперь отдельный инструмент, dotnet-ef
. Кроме того, в команде scaffold должен быть пробел между закрывающей кавычкой и Microsoft.EntityFrameworkCore.SqlServer
- person KenD; 29.03.2021
Вы можете запустить команду из терминала после выполнения нескольких необходимых шагов, как было найдено здесь:
- Вам необходимо вручную добавить следующее в свой * .csproj
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
- Выполнять
dotnet добавить пакет Microsoft.EntityFrameworkCore.Design
3. выполнить
dotnet восстановление
Теперь вы должны иметь возможность строить леса с помощью команды:
шаблон dbcontext dotnet ef --help
Я просто хотел опубликовать свое решение после того, как некоторое время боролся. Пришлось разделить строку схемы на несколько параметров --schema.
dotnet ef dbcontext scaffold "Server=<servername>,1433;Initial Catalog=<dbName>;Persist Security Info=False;User ID=<userID>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer --context [context] -f --output-dir [dir] --schema [schema1] --schema [schema2]
Если вы используете .NET Core 3.0.0 даже после установки EntityFrameworkCore, вам нужно будет запустить
dotnet add package Microsoft.EntityFrameworkCore.SqlServer