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
, Project
StartupProject
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
To
Parametry, 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
Migration
Parametr 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