Referenční informace k nástrojům Entity Framework Core – konzola Správce balíčků v sadě Visual Studio

Nástroje konzoly Správce balíčků (PMC) pro Entity Framework Core provádějí úlohy vývoje v době návrhu. Vytvářejí například migrace, používají migrace a generují kód pro model založený na existující databázi. Příkazy se spouští v sadě Visual Studio pomocí konzoly Správce balíčků. Tyto nástroje pracují s projekty .NET Framework i .NET Core.

Pokud visual Studio nepoužíváte, doporučujeme místo toho nástroje příkazového řádku EF Core. Nástroje rozhraní příkazového řádku .NET Core jsou multiplatformní a spouští se v příkazovém řádku.

Instalace nástrojů

Nainstalujte nástroje konzoly Správce balíčků spuštěním následujícího příkazu v konzole Správce balíčků:

Install-Package Microsoft.EntityFrameworkCore.Tools

Aktualizujte nástroje spuštěním následujícího příkazu v konzole Správce balíčků.

Update-Package Microsoft.EntityFrameworkCore.Tools

Ověření instalace

Spuštěním tohoto příkazu ověřte, že jsou nástroje nainstalované:

Get-Help about_EntityFrameworkCore

Výstup vypadá takto (neřekne vám, jakou verzi nástrojů používáte):


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

TOPIC
    about_EntityFrameworkCore

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

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

Použití nástrojů

Před použitím nástrojů:

  • Seznamte se s rozdílem mezi cílovým a spouštěcím projektem.
  • Naučte se používat nástroje s knihovnami tříd .NET Standard.
  • V případě ASP.NET základních projektů nastavte prostředí.

Cílový a spouštěný projekt

Příkazy odkazují na projekt a spouštěný projekt.

  • Projekt se také označuje jako cílový projekt, protože příkazy přidávají nebo odebírají soubory. Ve výchozím nastavení je cílovým projektem vybraný výchozí projekt v konzole Správce balíčků. Pomocí parametru -Project můžete zadat jiný projekt jako cílový projekt.

  • Spouštěcí projekt je projekt , který nástroje sestavují a spouštějí. Nástroje musí v době návrhu spouštět kód aplikace, aby získaly informace o projektu, jako je například databáze připojovací řetězec a konfigurace modelu. Ve výchozím nastavení je spouštěný projekt v Průzkumník řešení spouštěný projekt. Pomocí parametru -StartupProject můžete zadat jiný projekt jako spouštěný projekt.

Projekt po spuštění a cílový projekt jsou často stejný projekt. Typický scénář, ve kterém jsou samostatné projekty, jsou v následujících případech:

  • Kontext EF Core a třídy entit jsou v knihovně tříd .NET Core.
  • Konzolová aplikace .NET Core nebo webová aplikace odkazuje na knihovnu tříd.

Je také možné vložit kód migrace do knihovny tříd odděleně od kontextu EF Core.

Další cílové architektury

Nástroje konzoly Správce balíčků pracují s projekty .NET Core nebo .NET Framework. Aplikace, které mají model EF Core v knihovně tříd .NET Standard, nemusí mít projekt .NET Core nebo .NET Framework. To platí například pro Xamarin a Univerzální platforma Windows aplikace. V takových případech můžete vytvořit projekt konzolové aplikace .NET Core nebo .NET Framework, jehož jediným účelem je jednat jako spouštěný projekt pro nástroje. Projekt může být fiktivní projekt bez skutečného kódu – stačí zadat cíl pro nástroje.

Proč se vyžaduje fiktivní projekt? Jak už bylo zmíněno dříve, nástroje musí v době návrhu spouštět kód aplikace. K tomu musí použít modul runtime .NET Core nebo .NET Framework. Pokud je model EF Core v projektu, který cílí na .NET Core nebo .NET Framework, nástroje EF Core si modul runtime půjčí z projektu. Nemůžou to udělat, pokud je model EF Core v knihovně tříd .NET Standard. .NET Standard není skutečná implementace .NET; jedná se o specifikaci sady rozhraní API, která musí implementace .NET podporovat. Proto .NET Standard nestačí pro nástroje EF Core ke spuštění kódu aplikace. Fiktivní projekt, který vytvoříte pro použití jako spouštěný projekt, poskytuje konkrétní cílovou platformu, do které mohou nástroje načíst knihovnu tříd .NET Standard.

prostředí ASP.NET Core

Na příkazovém řádku můžete zadat prostředí pro projekty ASP.NET Core. Tyto a všechny další argumenty jsou předány do Program.CreateHostBuilder.

Update-Database -Args '--environment Production'

Společné parametry

Následující tabulka uvádí parametry, které jsou společné pro všechny příkazy EF Core:

Parametr Popis
-Context <String> Třída DbContext , která se má použít. Pouze název třídy nebo plně kvalifikovaný s obory názvů. Pokud tento parametr vynecháte, EF Core najde třídu kontextu. Pokud existuje více kontextových tříd, je tento parametr povinný.
-Project <String> Cílový projekt. Pokud tento parametr vynecháte, použije se jako cílový projekt výchozí projekt pro konzolu Správce balíčků.
-StartupProject <String> Spouštěcí projekt. Pokud tento parametr vynecháte, použije se projekt Po spuštění ve vlastnostech řešení jako cílový projekt.
-Args <String> Argumenty předané aplikaci.
-Verbose Zobrazení podrobného výstupu

Pokud chcete zobrazit informace o příkazu nápovědy, použijte příkaz PowerShellu Get-Help .

Tip

Funkce Context, Projecta StartupProject parametry podporují rozšíření tabulátoru.

Add-Migration

Přidá novou migraci.

Parametry:

Parametr Popis
-Name <String> Název migrace. Jedná se o poziční parametr a je povinný.
-OutputDir <String> Adresář slouží k výstupu souborů. Cesty jsou relativní vzhledem k cílovému adresáři projektu. Výchozí hodnota je "Migrace".
-Namespace <String> Obor názvů, který se má použít pro vygenerované třídy. Ve výchozím nastavení se vygeneruje z výstupního adresáře.

Výše jsou uvedeny běžné parametry .

Migrace sady prostředků

Vytvoří spustitelný soubor pro aktualizaci databáze.

Parametry:

Parametr Popis
-Output <String> Cesta spustitelného souboru, který chcete vytvořit.
-Force Přepište existující soubory.
-SelfContained Sbalte také modul runtime .NET, aby se na počítači nemusel instalovat.
-TargetRuntime <String> Cílový modul runtime, pro který se má seskupit.
-Framework <String> Cílová architektura. Výchozí hodnota je první v projektu.

Výše jsou uvedeny běžné parametry .

Drop-Database

Zahodí databázi.

Parametry:

Parametr Popis
-WhatIf Umožňuje zobrazit, která databáze se zahodí, ale nezahodí ji.

Výše jsou uvedeny běžné parametry .

Get-DbContext

Zobrazí seznam a získá informace o dostupných DbContext typech.

Výše jsou uvedeny běžné parametry .

Get-Migration

Zobrazí seznam dostupných migrací.

Parametry:

Parametr Popis
-Connection <String> Připojovací řetězec do databáze. Ve výchozím nastavení se nastaví hodnota zadaná v příkazu AddDbContext nebo OnConfiguring.
-NoConnect Nepřipojujte se k databázi.

Výše jsou uvedeny běžné parametry .

Optimize-DbContext

Vygeneruje zkompilovanou verzi modelu, který DbContextpoužívá .

Další informace najdete v tématu Kompilované modely .

Parametry:

Parametr Popis
-OutputDir <String> Adresář, do který se mají umístit soubory. Cesty jsou relativní k adresáři projektu.
-Namespace <String> Obor názvů, který se má použít pro všechny generované třídy. Výchozí hodnota vygenerovaná z kořenového oboru názvů a výstupního adresáře plus CompiledModels.

Výše jsou uvedeny běžné parametry .

Následující příklad používá výchozí hodnoty a funguje, pokud je v projektu pouze jeden DbContext :

Optimize-DbContext

Následující příklad optimalizuje model pro kontext se zadaným názvem a umístí ho do samostatné složky a oboru názvů:

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

Odebrání migrace

Odebere poslední migraci (vrátí zpět změny kódu, které byly provedeny pro migraci).

Parametry:

Parametr Popis
-Force Vrácení migrace (vrácení změn použitých v databázi)

Výše jsou uvedeny běžné parametry .

Scaffold-DbContext

Generuje kód pro DbContext typy entit a pro databázi. Aby bylo možné Scaffold-DbContext vygenerovat typ entity, musí mít tabulka databáze primární klíč.

Parametry:

Parametr Popis
-Connection <String> Připojovací řetězec do databáze. U ASP.NET projektů Core 2.x může být hodnota name=<název připojovací řetězec>. V takovém případě název pochází ze zdrojů konfigurace, které jsou nastavené pro projekt. Jedná se o poziční parametr a je povinný.
-Provider <String> Poskytovatel, který se má použít. Obvykle se jedná o název balíčku NuGet, například: Microsoft.EntityFrameworkCore.SqlServer. Jedná se o poziční parametr a je povinný.
-OutputDir <String> Adresář, do který se mají umístit soubory tříd entit. Cesty jsou relativní k adresáři projektu.
-ContextDir <String> Adresář, do který DbContext chcete soubor vložit. Cesty jsou relativní k adresáři projektu.
-Namespace <String> Obor názvů, který se má použít pro všechny generované třídy. Ve výchozím nastavení se vygeneruje z kořenového oboru názvů a výstupního adresáře.
-ContextNamespace <String> Obor názvů, který se má použít pro vygenerovanou DbContext třídu. Poznámka: přepsání -Namespace.
-Context <String> Název třídy, která DbContext se má vygenerovat.
-Schemas <String[]> Schémata tabulek a zobrazení pro generování typů entit. Pokud tento parametr vynecháte, zahrnou se všechna schémata. Pokud použijete tuto možnost, budou do modelu zahrnuty všechny tabulky a zobrazení ve schématech, i když nejsou explicitně zahrnuty pomocí parametru -Table.
-Tables <String[]> Tabulky a zobrazení pro generování typů entit. Tabulky nebo zobrazení v určitém schématu lze zahrnout pomocí formátu schema.table nebo schema.view. Pokud tento parametr vynecháte, budou zahrnuty všechny tabulky a zobrazení.
-DataAnnotations Pomocí atributů nakonfigurujte model (pokud je to možné). Pokud tento parametr vynecháte, použije se pouze rozhraní API fluent.
-UseDatabaseNames Použijte názvy tabulek, zobrazení, posloupnosti a sloupců přesně tak, jak se zobrazují v databázi. Pokud tento parametr vynecháte, názvy databází se změní tak, aby lépe odpovídaly konvencím stylu názvů jazyka C#.
-Force Přepište existující soubory.
-NoOnConfiguring Nevygenerujte DbContext.OnConfiguring.
-NoPluralize Nepoužívejte pluralizátor.

Výše jsou uvedeny běžné parametry .

Příklad:

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

Příklad, který vygeneruje pouze vybrané tabulky a vytvoří kontext v samostatné složce se zadaným názvem a oborem názvů:

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

Následující příklad načte připojovací řetězec z konfigurace projektu, která je pravděpodobně nastavena pomocí nástroje Secret Manager.

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

Script-DbContext

Vygeneruje skript SQL z DbContext. Obchází všechny migrace.

Parametry:

Parametr Popis
-Output <String> Soubor pro zápis výsledku.

Výše jsou uvedeny běžné parametry .

Migrace skriptů

Vygeneruje skript SQL, který použije všechny změny z jedné vybrané migrace na jinou vybranou migraci.

Parametry:

Parametr Popis
-From <String> Počáteční migrace. Migrace můžou být identifikovány podle názvu nebo podle ID. Číslo 0 je zvláštní případ, který znamená před první migrací. Výchozí hodnota je 0.
-To <String> Koncová migrace. Výchozí hodnota je poslední migrace.
-Idempotent Vygenerujte skript, který lze použít v databázi při jakékoli migraci.
-NoTransactions Negenerujte příkazy transakcí SQL.
-Output <String> Soubor pro zápis výsledku. POKUD tento parametr vynecháte, vytvoří se soubor s vygenerovaným názvem ve stejné složce jako soubory modulu runtime aplikace, například : /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

Výše jsou uvedeny běžné parametry .

Tip

Funkce To, Froma Output parametry podporují rozšíření tabulátoru.

Následující příklad vytvoří skript pro migraci InitialCreate (z databáze bez jakýchkoli migrací) pomocí názvu migrace.

Script-Migration 0 InitialCreate

Následující příklad vytvoří skript pro všechny migrace po migraci InitialCreate pomocí ID migrace.

Script-Migration 20180904195021_InitialCreate

Update-Database

Aktualizace databázi k poslední migraci nebo k zadané migraci.

Parametr Popis
-Migration <String> Cílová migrace. Migrace můžou být identifikovány podle názvu nebo podle ID. Číslo 0 je zvláštní případ, který znamená , že před první migrací a způsobí vrácení všech migrací zpět. Pokud není zadána žádná migrace, příkaz se ve výchozím nastavení nastaví na poslední migraci.
-Connection <String> Připojovací řetězec do databáze. Ve výchozím nastavení se nastaví hodnota zadaná v AddDbContext hodnotě nebo OnConfiguring.

Výše jsou uvedeny běžné parametry .

Tip

Parametr Migration podporuje rozšíření tabulátoru.

Následující příklad vrátí všechny migrace.

Update-Database 0

Následující příklady aktualizují databázi na zadanou migraci. První použije název migrace a druhý použije ID migrace a zadané připojení:

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

Další prostředky