2016-11-28 4 views
5

Ich habe Visual Studio für Mac (OSX 10.12.1) heute installiert und ich habe ziemlich ausführlich getaucht.Visual Studio Mac Vorschau Entity Framework SQLite hinzufügen Migration

Ich wollte versuchen, EntityFrameworkCore (1.1.0) mit SQLite laufen zu lassen.

Also ich habe eine neue Console Application .NET Core erstellt und mit einigen Problemen in der Lage, alle notwendigen Nuget-Pakete hinzuzufügen. Irgendwie war Visual Studio nicht in der Lage, die Abhängigkeiten herunterzuladen, also musste ich jede Abhängigkeit manuell herunterladen. (Vielleicht löst das Problem: .Net Core 1.1.0 NuGet packages fail to install in Visual Studio Mac dies noch nicht getestet haben.)

Wie in diesem Artikel erwähnt (https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite) Ich habe die Migration hinzufügen wollte, aber ich konnte das notwendige Kommandozeilen-Tool in der IDE nicht finden. Habe ich hier etwas verpasst?

Dann ging ich weiter mit dem .NET Core CLI, um es manuell über zu tun. Konsole. (https://www.microsoft.com/net/core#macos). Aber wenn ich dotnet ef migrations add init führe, erhalte ich den folgenden Fehler.

No executable found matching command "dotnet-ef"

Konnte jemand dies erfolgreich ausführen?

+0

Ich hatte ein ähnliches Problem in Ihrem Projekt hinzufügen und war in der Lage zu tun ein Gerüst von der Paketmanagerkonsole. DB war in meinem Fall PostgreSQL. –

Antwort

9

Visual Studio für Mac 2017 zur Zeit (April 2017) bietet keine Unterstützung für einen Verweis auf Microsoft.EntityFrameworkCore.Tools.DotNet Hinzufügen und gibt einen Fehler zurück:

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

Sie können die Datei manuell bearbeiten und den Verweis direkt zur Datei csproj hinzufügen, wie documented. Fügen Sie diese auf Ihre csproj Datei:

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

Dann laufen dotnet restore das Paket zu installieren. Danach können Sie die Skripte dotnet ef migrations add NameOfMigration und dotnet ef database update gemäß der Dokumentation verwenden.

N.B .: Sie müssen sich beim Ausführen von Befehlen im Projektverzeichnis befinden.

Siehe auch Vorschlag feeedback für VS 2017 für Mac:

+0

Hallo miha, Danke für Ihre gut dokumentierte Antwort. Ich werde das ausprobieren, sobald ich dazu komme. –

+0

Ich laufe immer noch auf Probleme, aber hauptsächlich mit dem dotnet cli. Trotzdem, wenn ich etwas mehr weiß, werde ich das hier erweitern. –

0

Überprüfen Sie, ob Sie diesen Abschnitt in Ihrer project.json-Datei haben und fügen Sie sie hinzu, wenn sie fehlt.

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

Dies gilt für EF 1.1, wurde mit Vorversion Microsoft.EntityFrameworkCore.Tools Paket

+2

Er spricht über Visual Studio für Mac, nicht Visual Studio Code. In Visual Studio für Mac gibt es keine Datei "project.json". –

2

Mit VS für Mac, diese folgenden Zeilen in CSPROJ Hinzufügen macht für mich die Migrationsarbeit:

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

Pakete werden sein wird automatisch wiederhergestellt und speichert die .csproj von VS.

Um den Befehl "dotnet ef" über das Terminal auszuführen, müssen Sie sich im Projektverzeichnis befinden, ich meine nicht aus dem Verzeichnis, in dem sich die .sln-Datei befindet, sondern aus der unteren Ebene.

Hinweis: Derselbe Trick mit v1.0.1 von Tools.DotNet hat nicht funktioniert, ich weiß nicht warum.

0

Ohne diese ItemGroup hinzufügen, kann die DbContext Gerüst Verbindungszeichenfolge Verwendung von cmd nicht hinzufügen, so dass diese (Edit CSPROJ) erste

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