Запустите Scaffold-DbContext в Visual Studio для Mac

У меня есть сайт, который сначала был создан с использованием базы данных, и я пытаюсь продолжить его разработку на Mac. Обычно я запускал Scaffold-dbContext с помощью диспетчера пакетов консоли в Visual Studio. В версии для Mac этого нет, я пробовал запустить его в Терминале, но это явно не сработало. Можно ли запустить эту команду или мне нужно продолжить разработку в Windows?


person Jhorra    schedule 12.06.2017    source источник
comment
Вы дошли до сути? Та же проблема..   -  person saZmer    schedule 23.06.2017
comment
Нет, я просто вернулся к разработке на Windows.   -  person Jhorra    schedule 24.06.2017
comment
У меня такая же проблема. Я использую High Sierra 10.13.5 и VS Community 7.5.3 (сборка 7). Я добавил запись: DotNetCliToolReference Include = Microsoft.EntityFrameworkCore.Tools.DotNet Version = 2.0.0 на .csproj, открыл решение и восстановил пакеты NuGet. Но он не добавлен в мой проект, и консоль не может написать ни слова. Какая-то идея?   -  person Jean J. Michel    schedule 06.07.2018


Ответы (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

person San Jaisy    schedule 26.07.2018
comment
Я отмечаю это как ответ. Это было невозможно, когда я впервые задал вопрос, но с обновлением до .Net Core 2.0 этот ответ дает всю необходимую информацию и шаги, необходимые для этого на Mac. - person Jhorra; 02.04.2019
comment
См. stackoverflow.com/a/57070108/266553 - dotnet ef теперь отдельный инструмент, dotnet-ef. Кроме того, в команде scaffold должен быть пробел между закрывающей кавычкой и Microsoft.EntityFrameworkCore.SqlServer - person KenD; 29.03.2021

Вы можете запустить команду из терминала после выполнения нескольких необходимых шагов, как было найдено здесь:

  1. Вам необходимо вручную добавить следующее в свой * .csproj

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>

  1. Выполнять

dotnet добавить пакет Microsoft.EntityFrameworkCore.Design

3. выполнить

dotnet восстановление

Теперь вы должны иметь возможность строить леса с помощью команды:

шаблон dbcontext dotnet ef --help

person Paul v Zyl    schedule 02.09.2017
comment
С обновлением до .Net Core 2.0 это наконец-то возможно. - person Jhorra; 20.10.2017

Я просто хотел опубликовать свое решение после того, как некоторое время боролся. Пришлось разделить строку схемы на несколько параметров --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]
person facingmonday    schedule 02.10.2019

Если вы используете .NET Core 3.0.0 даже после установки EntityFrameworkCore, вам нужно будет запустить

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

person Brett Fuller    schedule 02.11.2019