Entity Framework Core nástroje – konzola Správce balíčků v Visual Studio

Nástroje Správce balíčků Console (PMC) pro Entity Framework Core úlohy vývoje při návrhu. Například vytvářejí migrace, aplikují migrace a generují kód pro model založený na existující databázi. Příkazy se spustí uvnitř Visual Studio pomocí konzoly Správce balíčků Console. Tyto nástroje fungují s projekty .NET Framework i .NET Core.

Pokud tuto aplikaci Visual Studio, doporučujeme použít EF Core příkazového řádku. Nástroje .NET Core CLI jsou pro více platforem a spouštěné v příkazovém řádku.

Instalace nástrojů

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

Install-Package Microsoft.EntityFrameworkCore.Tools

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

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á podobně jako tento (nesvědí 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ů:

  • Porozumíte rozdílu mezi cílovým a spouštěcím projektem.
  • Naučte se používat nástroje s knihovnami .NET Standard tříd.
  • U ASP.NET Core 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 tam příkazy přidávají nebo odebírat soubory. Výchozím projektem vybraným v konzole Správce balíčků je ve výchozím nastavení cílový projekt. Jako cílový projekt můžete zadat jiný projekt pomocí parametru -Project .

  • Spouštěný projekt je ten, který nástroje sestaví a spustí. Nástroje musí v době návrhu spouštět kód aplikace, aby o projektu bylo možné získat informace, například připojovací řetězec databáze a konfiguraci modelu. Ve výchozím nastavení je ProjectPrůzkumník řešení spouštěcí projekt. Jako spouštěný projekt můžete zadat jiný projekt pomocí parametru -StartupProject .

Spouštěný projekt a cílový projekt jsou často stejný projekt. Typický scénář, kdy se jedná o samostatné projekty, je následující:

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

Kód migrace je také možné umístit do knihovny tříd odděleně od EF Core kontextu.

Další cílové architektury

Nástroje Správce balíčků Console pracují s .NET Core nebo .NET Framework projekty. Aplikace, které mají 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 fungovat jako spouštěný projekt pro nástroje. Projekt může být fiktivní projekt bez skutečného kódu – je potřeba pouze poskytnout 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 je potřeba použít .NET Core nebo .NET Framework runtime. Když je EF Core v projektu, který cílí na .NET Core nebo .NET Framework, EF Core si z projektu vypůjčí modul runtime. Nemůže to udělat, pokud je EF Core v knihovně tříd .NET Standard tříd. Výchozí .NET Standard není skutečná implementace rozhraní .NET. Jedná se o specifikaci sady rozhraní API, kterou musí implementace .NET podporovat. Proto .NET Standard nestačí, aby EF Core nástroje pro spouštění kódu aplikace. Fiktivní projekt, který vytvoříte pro použití jako spouštěný projekt, poskytuje konkrétní cílovou platformu, na kterou mohou nástroje načíst .NET Standard knihovny tříd.

ASP.NET Core prostředí

Pokud chcete určit prostředí pro ASP.NET Core, nastavte env:ASPNETCORE_ENVIRONMENT před spuštěním příkazů.

Počínaje EF Core 5.0 lze do Program.CreateHostBuilder předat také další argumenty, které vám umožní zadat prostředí na příkazovém řádku:

Update-Database -Args '--environment Production'

Běžné parametry

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

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 je tento parametr vynechán, EF Core vyhledá třídu kontextu. Pokud existuje více kontextových tříd, je tento parametr povinný.
-Project <String> Cílový projekt. Pokud je tento parametr vynechán, výchozí projekt pro Správce balíčků console se použije jako cílový projekt.
-StartupProject <String> Spouštěný projekt. Pokud je tento parametr vynechán, projekt Po spuštění vevlastnostech řešení se použije jako cílový projekt.
-Args <String> Argumenty předané aplikaci. Přidáno ve EF Core 5.0.
-Verbose Zobrazení podrobného výstupu

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

Tip

Parametry Context, ProjectStartupProject a 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, který je povinný.
-OutputDir <String> K výstupu souborů slouží adresář . 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. Výchozí hodnota je vygenerovaná z výstupního adresáře. Přidáno ve EF Core 5.0.

Běžné parametry jsou uvedené výše.

Bundle-Migration

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

Parametry:

Parametr Popis
-Output <String> Cesta ke spustitelnému souboru, který se má vytvořit.
-Force Přepsat existující soubory.
-SelfContained Zabalte také modul runtime .NET, abyste ho na počítač instalovat nemusí.
-TargetRuntime <String> Cílový modul runtime, pro který se má zabalovat.
-Framework <String> Cílová rozhraní. Výchozí hodnota je první v projektu.

Běžné parametry jsou uvedené výše.

Drop-Database

Zahodí databázi.

Parametry:

Parametr Popis
-WhatIf Zobrazte, která databáze by se zahodila, ale nevyhodíte ji.

Běžné parametry jsou uvedené výše.

Get-DbContext

Vypíše a získá informace o dostupných typech DbContext .

Běžné parametry jsou uvedené výše.

Get-Migration

Zobrazí seznam dostupných migrací. Přidáno ve EF Core 5.0.

Parametry:

Parametr Popis
-Connection <String> Připojovací řetězec k databázi. Výchozí hodnota je ta, která je zadaná v AddDbContext nebo OnConfiguring.
-NoConnect Nepřipojujte se k databázi.

Běžné parametry jsou uvedené výše.

Optimize-DbContext

Vygeneruje zkompilovanou verzi modelu používaného objektem DbContext. Přidáno ve EF Core 6.

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

Parametry:

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

Běžné parametry jsou uvedené výše.

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

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

Remove-Migration

Odebere poslední migraci (vrátí zpět změny kódu provedené pro migraci).

Parametry:

Parametr Popis
-Force Vraťte migraci (vraťte zpět změny, které se použily v databázi).

Běžné parametry jsou uvedené výše.

Scaffold-DbContext

Generuje kód pro typy DbContext 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 k databázi. U ASP.NET Core 2.x může být hodnota name=<name of connection string>. V takovém případě název pochází ze zdrojů konfigurace, které jsou nastavené pro projekt. Jedná se o poziční parametr, který 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, který je povinný.
-OutputDir <String> Adresář, do které se vložily soubory třídy entity. Cesty jsou relativní vzhledem k adresáři projektu.
-ContextDir <String> Adresář, do které se DbContext má soubor umístit. Cesty jsou relativní vzhledem k adresáři projektu.
-Namespace <String> Obor názvů, který se má použít pro všechny vygenerované třídy. Výchozí hodnota je vygenerovaná z kořenového oboru názvů a výstupního adresáře. Přidáno ve EF Core 5.0.
-ContextNamespace <String> Obor názvů, který se má použít pro vygenerované DbContext třídy. Poznámka: přepíše -Namespace. Přidáno ve EF Core 5.0.
-Context <String> Název třídy, která DbContext se má vygenerovat.
-Schemas <String[]> Schémata tabulek, pro které se mají generovat typy entit Pokud je tento parametr vynechán, budou zahrnuta všechna schémata.
-Tables <String[]> Tabulky, pro které se mají generovat typy entit. Pokud tento parametr vyhodíte, zahrnou se všechny tabulky.
-DataAnnotations Pokud je to možné, nakonfigurujte model pomocí atributů. Pokud je tento parametr vynechán, použije se pouze rozhraní API Fluent.
-UseDatabaseNames Názvy tabulek a sloupců používejte přesně tak, jak se zobrazují v databázi. Pokud je tento parametr vynechán, názvy databází se změní tak, aby více odpovídaly konvencím stylu názvů jazyka C#.
-Force Přepsat existující soubory.
-NoOnConfiguring Negeneruje .DbContext.OnConfiguring Přidáno ve EF Core 5.0.
-NoPluralize Nepoužívejte pluralizér. Přidáno ve EF Core 5.0.

Běžné parametry jsou uvedené výše.

Příklad:

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

Příklad, kdy se vytváře 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ě nastavená pomocí nástroje Secret Manager.

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

Script-DbContext

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

Parametry:

Parametr Popis
-Output <String> Soubor, do které se má výsledek zapsat.

Běžné parametry jsou uvedené výše.

Script-Migration

Vygeneruje SQL skript, 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 je možné identifikovat podle názvu nebo 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 Vygenerování skriptu, který lze použít v databázi při jakékoli migraci.
-NoTransactions Negenerování příkazů SQL transakcí. Přidáno ve EF Core 5.0.
-Output <String> Soubor, do které se má výsledek zapsat. Pokud je tento parametr vynechán, vytvoří se soubor s vygenerovaným názvem ve stejné složce, ve které jsou vytvořeny běhové soubory aplikace, například: /obj/Debug/netcoreapp2.1/ghbkztfz.SQL/.

Společné parametry jsou uvedeny výše.

Tip

ToParametry, From a Output podporují rozšíření karty.

Následující příklad vytvoří skript pro migraci InitialCreate (z databáze bez migrace) 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

Aktualizuje databázi na poslední migraci nebo na určenou migraci.

Parametr Popis
-Migration <String> Cílová migrace Migrace může být identifikována podle názvu nebo podle ID. Číslo 0 je zvláštní případ, který znamená před první migrací a způsobí, že se všechny migrace vrátí zpět. Pokud není zadaná žádná migrace, příkaz se nastaví jako výchozí pro poslední migraci.
-Connection <String> Připojovací řetězec k databázi. Výchozí hodnota je určena v AddDbContext nebo OnConfiguring . Přidáno v EF Core 5,0.

Společné parametry jsou uvedeny výše.

Tip

MigrationParametr podporuje rozšíření na kartě.

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

Update-Database 0

V následujících příkladech je databáze aktualizována na určenou migraci. První používá název migrace a druhý používá ID migrace a zadané připojení:

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

Další materiály