Entity Framework Core Reverse Engineering mit dem Kommandozeilentool dotnet

Der Dotnet-Doktor  –  0 Kommentare

Statt PowerShell-Commandlets lässt sich bei der Entwicklung von .NET-Core-Projekten auch das plattformübergreifend verfügbare Kommandozeilenwerkzeug dotnet aus dem .NET Core SDK einsetzen.

Bei der Entwicklung von .NET-Core- und ASP.NET-Core-Projekten kann für die Bedienung von Entity Framework Core alternativ zu den PowerShell-Commandlets wie Scaffold-DbContext auch das Kommandozeilenwerkzeug dotnet (alias .NET Core Command Line Interface – CLI) aus dem .NET Core SDK zum Einsatz kommen. Anders als die Commandlets gibt es das nicht nur für Windows, sondern auch für Linux und macOS.

Die damit verbundene Form der Codegenerierung funktioniert für .NET-Core-Konsolenanwendungen und ASP.NET-Core-Projekte auf Basis von .NET Core oder .NET Framework 4.5.1 und neuer.

Zunächst ist das Paket Microsoft.EntityFrameworkCore.Tools.DotNet zu installieren, was aber nicht über ein Kommandozeilenwerkzeug geht, sondern nur über einen manuellen Eintrag in der XML-basierten .csproj-Projektdatei:

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

Danach muss man noch das folgende Paket hinzufügen:

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design"
Version="1.1.2" />
</ItemGroup>

Das geht allerdings auch per Kommandozeile im Projektverzeichnis:

dotnet add package Microsoft.EntityFrameworkCore.Design

Nun fügt man den gewünschten Provider hinzu:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Bei Entity Framework Core 1.x ist außerdem der folgende Befehl notwendig (ab 2.0 nicht mehr!):

dotnet add package Microsoft.EntityFrameworkCore.SqlServer.Design

Danach können Entwickler die Codegenerierung ausführen, z.B.:

dotnet ef dbcontext scaffold "Server=MeinServer;Database=MeineDatenbank;
Trusted_Connection=True;MultipleActiveResultSets=True;"
Microsoft.EntityFrameworkCore.SqlServer --output-Dir Modell

Microsoft hat die endgültige Version von dotnet 1.0 erst am 6. März 2017 im Rahmen von Entity Framework Core 1.1.1 und Visual Studio 2017 veröffentlicht. Zuvor gab es nur "Preview"-Versionen, die noch eine project.json-Datei verwendet haben.

Wenn Sie noch dieses veraltete Format verwenden, müssen Sie die Einträge nicht in der .csproj, sondern der project.json-Datei machen!