Referens för Entity Framework Core-verktyg – Správca balíkov-konsolen i Visual Studio

Verktygen för Správca balíkov Console (PMC) för Entity Framework Core utför utvecklingsuppgifter under designfasen. De skapar till exempel migreringar, tillämpar migreringar och genererar kod för en modell baserat på en befintlig databas. Kommandona körs i Visual Studio med Správca balíkov-konsolen. Dessa verktyg fungerar med både .NET Framework- och .NET-projekt.

Om du inte använder Visual Studio rekommenderar vi EF Core-kommandoradsverktyg i stället. .NET CLI-verktygen är plattformsoberoende och körs i en kommandotolk.

Warning

Den här artikeln använder en lokal databas som inte kräver att användaren autentiseras. Produktionsappar bör använda det säkraste tillgängliga autentiseringsflödet. Mer information om autentisering för distribuerade test- och produktionsappar finns i Säkra autentiseringsflöden.

Installera verktygen

Installera Pakethanterarens konsolverktyg genom att köra följande kommando i Správca balíkov Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Uppdatera verktygen genom att köra följande kommando i Správca balíkov Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Kontrollera installationen

Kontrollera att verktygen har installerats genom att köra det här kommandot:

Get-Help about_EntityFrameworkCore

Utdata ser ut så här (det anger inte vilken version av verktygen du använder):


                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

TOPIC
    about_EntityFrameworkCore

SHORT DESCRIPTION
    Provides information about the Entity Framework Core Package Manager Console Tools.

<A list of available commands follows, omitted here.>

Använda verktygen

Innan du använder verktygen:

  • Förstå skillnaden mellan mål- och startprojekt.
  • Lär dig hur du använder verktygen med .NET Standard-klassbibliotek.
  • Ange miljön för ASP.NET Core-projekt.

Mål- och startprojekt

Kommandona refererar till ett projekt och ett startprojekt.

  • Det projektet kallas även målprojekt eftersom det är där kommandona lägger till eller tar bort filer. Som standard är det projekt som har markeringen Default project i Správca balíkov Console det målprojektet. Du kan ange ett annat projekt som målprojekt med hjälp av parametern -Project.

  • Det startprojektet är det som verktygen skapar och kör. Verktygen måste köra programkod vid designtillfället för att få information om projektet, till exempel databasanslutningssträngen och konfigurationen av modellen. Som standard är Startprojekt i Prieskumník riešení startprojektet. Du kan ange ett annat projekt som startprojekt med hjälp av parametern -StartupProject.

Startprojektet och målprojektet är ofta samma projekt. Ett typiskt scenario där de är separata projekt är när:

  • EF Core-kontext- och entitetsklasserna finns i ett .NET-klassbibliotek.
  • En .NET-konsolapp eller webbapp refererar till klassbiblioteket.

Det är också möjligt att placera migreringskod i ett klassbibliotek separat från EF Core-kontexten.

Andra målramverk

Správca balíkov-konsolverktygen måste köra programkod med hjälp av en .NET körning. Använd inte ett plattformsspecifikt program, till exempel .NET MAUI, WinUI, Blazor WebAssembly eller Azure Functions, som startprojekt för verktygen. Placera i stället migreringar i ett normalt plattformsoberoende .NET projekt med ett IDesignTimeDbContextFactory<TContext>, och använd det projektet som både mål- och startprojekt. Se Använda en separat migrering Project.

Important

Xamarin.Android, Xamarin.iOS, Xamarin.Mac är nu direkt integrerade i .NET (från och med .NET 6) som .NET för Android, .NET för iOS och .NET för macOS. Om du skapar med dessa projekttyper i dag bör de uppgraderas till .NET SDK-liknande projekt för fortsatt support. Mer information om hur du uppgraderar Xamarin-projekt till .NET finns i dokumentationen Upgrade from Xamarin to .NET & .NET MAUI.

Visual Studio och Správca balíkov-konsolen körs normalt som 64-bitarsprocesser och kan inte läsa in en x86-endast startsammansättning. Föredrar ett AnyCPU-migreringsprojekt. När alla designtidsberoenden måste vara x86 använder du .NET CLI med en uttryckligen vald X86 SDK/verktygsvärd.

ASP.NET Core-miljö

Du kan ange miljön för ASP.NET Core-projekt på kommandoraden. Detta och eventuella ytterligare argument skickas till Program.CreateHostBuilder.

Update-Database -Args '--environment Production'

Gemensamma parametrar

I följande tabell visas parametrar som är gemensamma för alla EF Core-kommandon:

Parameter Description
-Context <String> Den DbContext klass som ska användas. Endast klassnamn eller fullständigt specificerat med namnrymder. Om den här parametern utelämnas hittar EF Core kontextklassen. Om det finns flera kontextklasser krävs den här parametern.
-Project <String> Målprojektet. Om den här parametern utelämnas används standardprojektet för Správca balíkov Console som målprojekt.
-StartupProject <String> Startupprojektet Om den här parametern utelämnas används Startup-projektet i Lösningsegenskaper som målprojekt.
-Args <String> Argument som ges till applikationen.
-Verbose Visa utförliga utdata.

Om du vill visa hjälpinformation om ett kommando använder du PowerShells Get-Help kommando.

Tip

Parametrarna Context, Projectoch StartupProject stöder tab-expansion.

Add-Migration

Lägger till en ny migrering.

Parameters:

Parameter Description
-Name <String> Namnet på migreringen. Detta är en positionsparameter och krävs.
-OutputDir <String> Katalogen som ska användas för utdatafilerna. Sökvägarna är relativa till målprojektkatalogen. Standardvärdet är "Migreringar".
-Namespace <String> Namnområdet som ska användas för de genererade klasserna. Som standard genereras från utdatakatalogen.
-NoBuild Skapa inte projektet innan du kör kommandot. Avsedd att användas när versionen är up-to-date. Har lagts till i EF Core 11.

De vanliga parametrarna visas ovan.

Bundle-Migration

Skapar en körbar fil för att uppdatera databasen.

Parameters:

Parameter Description
-Output <String> Sökvägen till den körbara fil som ska skapas.
-Force Skriv över befintliga filer.
-SelfContained Bunta ihop .NET-körmiljön så att den inte behöver installeras på datorn.
-TargetRuntime <String> Målkörningen som ska paketas för.
-Framework <String> Målramverket. Som standard används den första i projektet.

De vanliga parametrarna visas ovan.

Drop-Database

Raderar databasen.

Parameters:

Parameter Description
-WhatIf Visa vilken databas som skulle tas bort, men släpp den inte.
-Connection <String> Anslutningssträngen till databasen. Standardvärdet är det som specificeras i AddDbContext eller OnConfiguring. Har lagts till i EF Core 11.

De vanliga parametrarna visas ovan.

Get-DbContext

Listar och visar information om tillgängliga DbContext-typer.

De vanliga parametrarna visas ovan.

Get-Migration

Visar tillgängliga migreringar.

Parameters:

Parameter Description
-Connection <String> Anslutningssträngen till databasen. Standardvärdet är det som anges i AddDbContext eller OnConfiguring.
-NoConnect Anslut inte till databasen.

De vanliga parametrarna visas ovan.

Optimize-DbContext

Genererar en kompilerad version av modellen som används av DbContext.

Mer information finns i Kompilerade modeller.

Parameters:

Parameter Description
-OutputDir <String> Katalogen där filer ska placeras. Sökvägarna är relativa till projektkatalogen.
-Namespace <String> Namnområdet som ska användas för alla genererade klasser. Som standard genereras från rotnamnområdet och utdatakatalogen plus CompiledModels.

De vanliga parametrarna visas ovan.

Note

PMC-verktygen stöder för närvarande inte att generera kod som krävs för NativeAOT-kompilering och förkompilerade frågor.

I följande exempel används standardvärdena och fungerar om det bara finns en DbContext i projektet:

Optimize-DbContext

I följande exempel optimeras modellen för kontexten med det angivna namnet och placerar den i en separat mapp och ett namnområde:

Optimize-DbContext -OutputDir Models -Namespace BlogModels -Context BlogContext

Remove-Migration

Tar bort den senaste migreringen (återställer de kodändringar som gjordes för migreringen).

Parameters:

Parameter Description
-Force Återställ migreringen (återställ de ändringar som tillämpades på databasen).
-Connection <String> Anslutningssträngen till databasen. Standardvärdet är det som specificeras i AddDbContext eller OnConfiguring. Har lagts till i EF Core 11.
-Offline Ta bort migreringen utan att ansluta till databasen. Har lagts till i EF Core 11.

De vanliga parametrarna visas ovan.

Note

Parametrarna -Offline och -Force kan inte användas tillsammans, eftersom -Force det krävs en databasanslutning för att kontrollera om migreringen har tillämpats innan den återställs.

Scaffold-DbContext

Genererar kod för en DbContext och entitetstyper för en databas. För att Scaffold-DbContext ska kunna generera en entitetstyp måste databastabellen ha en primärnyckel.

Parameters:

Parameter Description
-Connection <String> Anslutningssträngen till databasen. Värdet kan vara name=<namnet på anslutningssträngen>. I så fall kommer namnet från konfigurationskällor som har konfigurerats för projektet. Detta är en positionsparameter och krävs.
-Provider <String> Providern som ska användas. Det här är vanligtvis namnet på NuGet-paketet, till exempel: Microsoft.EntityFrameworkCore.SqlServer. Detta är en positionsparameter och krävs.
-OutputDir <String> Katalogen som entitetsklassfiler ska placeras i. Sökvägarna är relativa till projektkatalogen.
-ContextDir <String> Katalogen som filen DbContext ska placeras i. Sökvägarna är relativa till projektkatalogen.
-Namespace <String> Namnområdet som ska användas för alla genererade klasser. Som standard genereras från rotnamnområdet och utdatakatalogen.
-ContextNamespace <String> Namnområdet som ska användas för den genererade DbContext-klassen. Observera: åsidosätter -Namespace.
-Context <String> Namnet på den DbContext klass som ska genereras.
-Schemas <String[]> Scheman för tabeller och vyer som ska generera entitetstyper för. Om den här parametern utelämnas inkluderas alla scheman. Om det här alternativet används inkluderas alla tabeller och vyer i schemana i modellen, även om de inte uttryckligen ingår i -Table.
-Tables <String[]> Tabeller och vyer som ska generera entitetstyper för. Tabeller eller vyer i ett visst schema kan inkluderas med formatet "schema.table" eller "schema.view". Om den här parametern utelämnas inkluderas alla tabeller och vyer.
-DataAnnotations Använd attribut för att konfigurera modellen (där det är möjligt). Om den här parametern utelämnas används endast api:et fluent.
-UseDatabaseNames Använd tabell-, vy-, sekvens- och kolumnnamn exakt som de visas i databasen. Om den här parametern utelämnas ändras databasnamnen så att de bättre överensstämmer med C#-namnformatkonventionerna.
-Force Skriv över befintliga filer.
-NoOnConfiguring Generera inte DbContext.OnConfiguring.
-NoPluralize Använd inte pluraliseraren.

De vanliga parametrarna visas ovan.

Example:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Exempel som endast genererar utvalda tabeller och skapar kontexten i en separat mapp med ett angivet namn och namnområde.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "Blog","Post" -ContextDir Context -Context BlogContext -ContextNamespace New.Namespace

Följande exempel läser anslutningssträngen med hjälp av Configuration.

Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer

Script-DbContext

Genererar ett SQL-skript från DbContext. Kringgår alla migreringar.

Parameters:

Parameter Description
-Output <String> Filen som resultatet ska skrivas till.

De vanliga parametrarna visas ovan.

Script-Migration

Genererar ett SQL-skript som tillämpar alla ändringar från en vald migrering på en annan vald migrering.

Parameters:

Parameter Description
-From <String> Den påbörjade migreringen. Migreringar kan identifieras med namn eller ID. Talet 0 är ett specialfall vilket betyder att det är före den första migreringen. Standardvärdet är 0.
-To <String> Den avslutande migreringen. Standardvärdet är till den senaste migreringen.
-Idempotent Generera ett skript som kan användas i en databas vid valfri migrering.
-NoTransactions Generera inte SQL-transaktionsinstruktioner.
-Output <String> Filen som resultatet ska skrivas till. Om den här parametern utelämnas skapas filen med ett genererat namn i samma mapp som appens körningsfiler skapas, till exempel: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

De vanliga parametrarna visas ovan.

Tip

Parametrarna To, Fromoch Output stöder tab-expansion.

I följande exempel skapas ett skript för migreringen InitialCreate (från en databas utan migreringar) med hjälp av migreringsnamnet.

Script-Migration 0 InitialCreate

I följande exempel skapas ett skript för alla migreringar efter migreringen InitialCreate med hjälp av migrerings-ID:t.

Script-Migration 20180904195021_InitialCreate

Update-Database

Uppdaterar databasen till den senaste migreringen eller till en angiven migrering.

Parameter Description
-Migration <String> Målmigration. Migreringar kan identifieras med namn eller ID. Talet 0 är ett specialfall som betyder före den första migreringen och leder till att alla migreringar återställs. Om ingen migrering har angetts är kommandot standard för den senaste migreringen.
-Connection <String> Anslutningssträngen till databasen. Standardvärdet är det som specificeras i AddDbContext eller OnConfiguring.
-Add Skapar en ny migrering och tillämpar den på databasen i ett enda steg. Använder Roslyn för att kompilera migreringen vid körning. Om detta anges krävs ett migreringsnamn, som anger namnet på den nya migreringen. Har lagts till i EF Core 11.
-OutputDir <String> Katalogen där migreringsfiler ska placeras. Sökvägarna är relativa till målprojektkatalogen. Kräver -Add. Har lagts till i EF Core 11.
-Namespace <String> Namnområdet som ska användas för de genererade migreringsklasserna. Kräver -Add. Har lagts till i EF Core 11.
-NoBuild Skapa inte projektet innan du kör kommandot. Avsedd att användas när versionen är up-to-date. Har lagts till i EF Core 11.

De vanliga parametrarna visas ovan.

Warning

-Migration anger tillståndet som databasen ska vara i när kommandot har slutförts. Om databasen för närvarande är vid en nyare migrering återställer kommandot varje migrering som är nyare än målet genom att köra dess Down åtgärder. Den tillämpar inte en äldre migrering i ordning.

Tip

Parametern Migration stöder tab-expansion.

I följande exempel återställs alla migreringar.

Update-Database 0

I följande exempel uppdateras databasen till en angiven migrering. Den första använder migreringsnamnet och det andra använder migrerings-ID:t och en angiven anslutning:

Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string

I följande exempel skapas en ny migrering och den tillämpas på databasen i ett steg:

Update-Database -Migration InitialCreate -Add

Ytterligare resurser