2016-11-28 2 views
5

Сегодня я установил Visual Studio для Mac (OSX 10.12.1), и я очень активно занимался дайвингом.Visual Studio Mac Preview Entity Framework SQLite добавить миграцию

Я хотел попытаться получить EntityFrameworkCore (1.1.0) для работы с SQLite.

Итак, я создал новый консольный компонент .NET Core и с некоторыми проблемами смог добавить все необходимые пакеты nuget. Как-то Visual Studio не смогла загрузить зависимости, поэтому мне пришлось загружать каждую зависимость вручную. (Может быть, это решает проблему: .Net Core 1.1.0 NuGet packages fail to install in Visual Studio Mac не testet это пока.)

Как указано в этой статье (https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite) Я хотел бы добавить миграцию, но я не мог найти нужный инструмент командной строки в среде IDE. Я что-то пропустил?

Затем я продолжал использовать .NET Core CLI для этого вручную. консоль. (https://www.microsoft.com/net/core#macos). Но когда я выполняю dotnet ef migrations add init, я получаю следующую ошибку.

No executable found matching command "dotnet-ef"

Был ли кто-нибудь в состоянии заставить его работать успешно?

+0

У меня был подобный вопрос и был в состоянии сделать эшафот из консоли диспетчера пакетов. DB был PostgreSQL в моем случае. –

ответ

9

Visual Studio для Mac 2017 года в настоящее время (апрель 2017 года) не поддерживает добавление ссылки на Microsoft.EntityFrameworkCore.Tools.DotNet и возвращает ошибку:

Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'DotnetCliTool' that is not supported by project 'MacMvc'. 

Вы можете отредактировать файл вручную и добавить ссылку непосредственно в файл csproj, как documented. Добавьте к этому файлу csproj:

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

Затем запустите dotnet restore для установки пакета. После этого вы сможете использовать сценарии dotnet ef migrations add NameOfMigration и dotnet ef database update в соответствии с документацией.

N.B .: вы должны находиться в каталоге проекта при выполнении команд.

Также см рекомендации feeedback для VS 2017 для Mac:

+0

Hello miha, Спасибо за ваш хорошо документированный ответ. Я попробую это, как только доберусь до него. –

+0

Я все еще сталкиваюсь с проблемами, но в основном с dotnet cli. Спасибо в любом случае, если я знаю что-то еще, я продолжу это здесь. –

0

Проверьте, есть ли у вас этот раздел в файле project.json и добавьте его, если он отсутствует.

"tools": { 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" 
} 

Это справедливо для EF 1.1, предыдущая версия использует Microsoft.EntityFrameworkCore.Tools пакет

+2

Он говорит о Visual Studio для Mac, а не Visual Studio Code. В Visual Studio для Mac нет файла 'project.json'. –

2

Использование VS для Mac, добавив эти следующие строки в .csproj делает миграционную работу для меня:

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" /> 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" /> 

Пакеты будут автоматически восстанавливается сохранение .csproj из VS.

Чтобы выполнить команду «dotnet ef» через терминал, вы должны находиться в каталоге проекта, я имею в виду не из каталога, где находится файл .sln, а с более низкого уровня.

Примечание: Тот же трюк с v1.0.1 инструментов.DotNet не работал, я не знаю, почему.

0

Без добавить ItemGroup, не может добавить DbContext эшафот строки соединения используют ЦМД, так что добавление этого в проекте (Edit .csproj) первый

<ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
    </ItemGroup> 
Смежные вопросы