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
můžete zadat jiný projekt jako cílový projekt.-Project
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
můžete zadat jiný projekt jako spouštěný projekt.-StartupProject
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
, Project
a 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ý DbContext
použí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
, From
a 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