Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nástroje rozhraní příkazového řádku (CLI) 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 jsou rozšířením příkazu dotnet pro různé platformy, který je součástí sady .NET SDK. Tyto nástroje pracují s projekty .NET.
Při použití sady Visual Studio zvažte použití nástrojů konzoly Správce balíčků místo nástrojů rozhraní příkazového řádku. nástroje konzoly Správce balíčků automaticky:
- Funguje s aktuálním projektem vybraným v konzole Správce balíčků, aniž byste museli ručně přepínat adresáře.
- Po dokončení příkazu otevře soubory vygenerované příkazem.
- Poskytuje automatické doplňování příkazů, parametrů, názvů projektů, typů kontextů a názvů migrací pomocí klávesy Tab.
Instalace nástrojů
dotnet ef lze nainstalovat jako globální nebo místní nástroj. Většina vývojářů preferuje dotnet ef instalaci jako globální nástroj pomocí následujícího příkazu:
dotnet tool install --global dotnet-ef
Pokud ho chcete použít jako místní nástroj, obnovte závislosti projektu, který ho deklaruje jako nástrojovou závislost pomocí souboru manifestu nástroje.
Aktualizujte nástroj pomocí následujícího příkazu:
dotnet tool update --global dotnet-ef
Než budete moct použít nástroje pro konkrétní projekt, budete do něj muset přidat Microsoft.EntityFrameworkCore.Design balíček.
dotnet add package Microsoft.EntityFrameworkCore.Design
Ověření instalace
Spuštěním následujících příkazů ověřte, že jsou správně nainstalované nástroje rozhraní příkazového řádku EF Core:
dotnet ef
Výstup příkazu identifikuje verzi nástrojů, které se používají:
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065
<Usage documentation follows, not shown.>
Aktualizace nástrojů
Slouží dotnet tool update --global dotnet-ef k aktualizaci globálních nástrojů na nejnovější dostupnou verzi. Pokud máte nástroje nainstalované místně v projektu, použijte dotnet tool update dotnet-ef. Nainstalujte konkrétní verzi připojením --version <VERSION> k příkazu. Další podrobnosti najdete v části Aktualizace v dokumentaci nástroje dotnet.
Použití nástrojů
Před použitím nástrojů možná budete muset vytvořit spouštěný projekt nebo nastavit prostředí.
Cílový projekt 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 projekt v aktuálním adresáři cílovým projektem. Pomocí této možnosti můžete zadat jiný projekt jako cílový projekt
.--projectVýchozí projekt je ten, 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 připojovací řetězec k databázi a konfigurace modelu. Ve výchozím nastavení je projekt v aktuálním adresáři výchozím projektem. Pomocí této možnosti můžete zadat jiný projekt jako spouštěný projekt
.--startup-project
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.
- Konzolová aplikace .NET 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é frameworky
Nástroje rozhraní příkazového řádku pracují s projekty .NET a projekty rozhraní .NET Framework. Aplikace, které mají model EF Core v knihovně tříd .NET Standard, nemusí mít projekt .NET nebo .NET Framework. To platí například pro Xamarin a aplikace pro platformu Universal Windows. V takových případech můžete vytvořit projekt konzolové aplikace .NET, 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.
Important
Xamarin.Android, Xamarin.iOS, Xamarin.Mac jsou teď integrované přímo do .NET (počínaje .NET 6) jako .NET pro Android, .NET pro iOS a .NET pro macOS. Pokud tyto typy projektů vytváříte ještě dnes, měli byste je upgradovat na projekty ve stylu sady .NET SDK, abyste mohli pokračovat v podpoře. Další informace o upgradu projektů Xamarin na .NET najdete v dokumentaci Upgrade z Xamarinu na .NET & .NET MAUI.
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. Pokud je model EF Core v projektu, který cílí na .NET nebo .NET Framework, nástroje EF Core si půjčují modul runtime 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.
dotnet ef database update -- --environment Production
Tip
Token -- směruje dotnet ef na zpracování všeho, co následuje jako argument, a nepokouší se je analyzovat jako možnosti. Všechny nadbytečné argumenty, které dotnet ef aplikace nepoužívá, se předávají do aplikace.
Běžné možnosti
| Option | Short | Description |
|---|---|---|
--json |
Zobrazení výstupu JSON | |
--context <DBCONTEXT> |
-c |
Třída DbContext , která se má použít. Pouze název třídy nebo plně kvalifikovaný názvy oborů. Pokud tuto možnost vynecháte, EF Core najde třídu kontextu. Pokud existuje více tříd kontextu, je tato možnost povinná. |
--project <PROJECT> |
-p |
Relativní cesta ke složce cílového projektu. Výchozí hodnota je aktuální složka. |
--startup-project <PROJECT> |
-s |
Relativní cesta ke složce projektu spouštěného projektu. Výchozí hodnota je aktuální složka. |
--framework <FRAMEWORK> |
Identifikátor cílového rozhraní pro cílové rozhraní. Použijte, když soubor projektu určuje více cílových architektur a chcete vybrat jednu z nich. | |
--configuration <CONFIGURATION> |
Konfigurace sestavení, například: Debug nebo Release. |
|
--runtime <IDENTIFIER> |
Identifikátor cílového prostředí runtime pro obnovení balíčků. Seznam identifikátorů runtime (RID) najdete v katalogu RID. | |
--no-build |
Nevystavujte projekt. Určeno k použití, když je sestavení aktuální. | |
--help |
-h |
Zobrazí informace nápovědy. |
--verbose |
-v |
Zobrazení podrobného výstupu |
--no-color |
Nevybarvujte výstup. | |
--prefix-output |
Předponujte výstup úrovní. |
Do aplikace se předají všechny další argumenty.
dotnet ef database drop
Odstraní databázi.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Nepotvrzujte. |
--dry-run |
Zobraz, která databáze bude odstraněna, ale neodstraňuj ji. | |
--connection <CONNECTION> |
Připojovací řetězec do databáze. Ve výchozím nastavení se použije hodnota uvedená v AddDbContext nebo OnConfiguring. Přidáno v EF Core 11. |
Běžné možnosti jsou uvedené výše.
dotnet ef database update
Aktualizuje databázi na poslední migraci nebo na zadanou migraci.
Arguments:
| Argument | Description |
|---|---|
<MIGRATION> |
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á před první migrací a způsobuje vrácení všech migrací. Pokud není zadána žádná migrace, příkaz se ve výchozím nastavení nastaví na poslední migraci. |
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
Připojovací řetězec do databáze. Výchozí je ten uvedený v AddDbContext nebo OnConfiguring. |
Běžné možnosti jsou uvedené výše.
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í:
dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string
dotnet ef dbcontext info
Získá informace o typu DbContext.
Běžné možnosti jsou uvedené výše.
dotnet ef dbcontext list
Seznam dostupných DbContext typů.
Běžné možnosti jsou uvedené výše.
dotnet ef dbcontext optimize
Vygeneruje zkompilovanou verzi modelu používaného pro DbContext a dotazy předkompiluje.
Další informace najdete v tématu Kompilované modely .
Options:
| Option | Short | Description |
|---|---|---|
--output-dir <PATH> |
-o |
Adresář, do který se mají umístit soubory. Cesty jsou relativní k adresáři projektu. |
--namespace <NAMESPACE> |
-n |
Obor názvů, který se má použít pro všechny generované třídy. Výchozí hodnota bude generována z kořenového oboru názvů a výstupního adresáře, dále CompiledModels. |
--suffix <SUFFIX> |
Přípona, která se má připojit k názvu všech vygenerovaných souborů.
.g Například lze použít k označení, že tyto soubory obsahují vygenerovaný kód. |
|
--no-scaffold |
Nevygenerujte kompilovaný model. Používá se, když už byl vygenerován zkompilovaný model. | |
--precompile-queries |
Vygenerujte předkompilované dotazy. To se vyžaduje pro kompilaci NativeAOT, pokud cílový projekt obsahuje jakékoli dotazy. | |
--nativeaot |
Vygenerování dalšího kódu v kompilovaném modelu požadovaném pro kompilaci NativeAOT a předkompilované dotazy |
Note
Nativní podpora AOT a předkompilované dotazy jsou v EF 9 považovány za experimentální a v příští verzi by se mohly výrazně změnit.
Běžné možnosti jsou uvedené výše.
Následující příklad používá výchozí nastavení a funguje, pokud je v projektu pouze jeden DbContext :
dotnet ef dbcontext optimize
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ů:
dotnet ef dbcontext optimize -o Models -n BlogModels -c BlogContext
dotnet ef dbcontext scaffold
Generuje kód pro DbContext a typy entit pro databázi. Aby tento příkaz mohl vygenerovat typ entity, musí mít tabulka databáze primární klíč.
Arguments:
| Argument | Description |
|---|---|
<CONNECTION> |
Připojovací řetězec do databáze. U projektů ASP.NET Core 2.x může být hodnota name=<název připojovacího řetězce>. V takovém případě název pochází ze zdrojů konfigurace, které jsou nastavené pro projekt. |
<PROVIDER> |
Poskytovatel, který má být použit. Obvykle se jedná o název balíčku NuGet, například: Microsoft.EntityFrameworkCore.SqlServer. |
Options:
| Option | Short | Description |
|---|---|---|
--data-annotations |
-d |
Pomocí atributů nakonfigurujte model (pokud je to možné). Pokud tuto možnost vynecháte, použije se pouze rozhraní API fluent. |
--context <NAME> |
-c |
Název třídy DbContext, která se má vygenerovat. |
--context-dir <PATH> |
Adresář, do který chcete umístit DbContext soubor třídy. Cesty jsou relativní k adresáři projektu. Jmenné prostory jsou odvozeny z názvů složek. |
|
--context-namespace <NAMESPACE> |
Obor názvů, který se má použít pro vygenerovanou DbContext třídu. Poznámka: přepisuje --namespace. |
|
--force |
-f |
Přepište existující soubory. |
--output-dir <PATH> |
-o |
Adresář, do který se mají umístit soubory tříd entit. Cesty jsou relativní k adresáři projektu. |
--namespace <NAMESPACE> |
-n |
Obor názvů, který se má použít pro všechny generované třídy. Výchozí nastavení je generováno z kořenového oboru názvů a výstupního adresáře. |
--schema <SCHEMA_NAME>... |
Schémata tabulek a zobrazení pro generování typů entit. Pokud chcete zadat více schémat, opakujte --schema pro každou z nich. Pokud tuto možnost vynecháte, budou zahrnuta 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. |
|
--table <TABLE_NAME>... |
-t |
Tabulky a zobrazení pro generování typů entit. Chcete-li zadat více tabulek, opakujte pro každou z nich -t nebo --table. Tabulky nebo zobrazení v určitém schématu lze zahrnout pomocí formátu schema.table nebo schema.view. Pokud tuto možnost vynecháte, budou zahrnuty všechny tabulky a zobrazení. |
--use-database-names |
Použijte názvy tabulek, zobrazení, posloupnosti a sloupců přesně tak, jak se zobrazují v databázi. Pokud tuto možnost vynecháte, názvy databází se změní tak, aby lépe odpovídaly konvencím stylu názvů jazyka C#. | |
--no-onconfiguring |
Potlačí generování OnConfiguring metody ve vygenerované DbContext třídě. |
|
--no-pluralize |
Nepoužívejte pluralizátor. |
Běžné možnosti jsou uvedené výše.
Následující příklad vygeneruje všechna schémata a tabulky a umístí nové soubory do složky Models .
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
Následující příklad vygeneruje pouze vybrané tabulky a vytvoří kontext v samostatné složce se zadaným názvem a oborem názvů:
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace
Následující příklad načte připojovací řetězec ze sady konfigurace projektu pomocí nástroje Secret Manager.
dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer
Následující příklad přeskočí scaffoldování metody OnConfiguring. To může být užitečné, když chcete nakonfigurovat DbContext mimo třídu. Například aplikace ASP.NET Core ji obvykle konfigurují ve službě Startup.ConfigureServices.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=true;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
Vygeneruje skript SQL z DbContext. Obchází všechny migrace.
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Soubor pro zápis výsledku. |
Běžné možnosti jsou uvedené výše.
dotnet ef migrations add
Přidá novou migraci.
Arguments:
| Argument | Description |
|---|---|
<NAME> |
Název migrace. |
Options:
| Option | Short | Description |
|---|---|---|
--output-dir <PATH> |
-o |
Adresář slouží k výstupu souborů. Cesty jsou relativní vzhledem k cílovému adresáři projektu. Výchozí hodnota je "Migrace". |
--namespace <NAMESPACE> |
-n |
Obor názvů, který se má použít pro vygenerované třídy. Výchozím stavem je generování z výstupního adresáře. |
Běžné možnosti jsou uvedené výše.
dotnet ef migrations bundle
Vytvoří spustitelný soubor pro aktualizaci databáze.
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Cesta spustitelného souboru, který chcete vytvořit. |
--force |
-f |
Přepište existující soubory. |
--self-contained |
Sbalte také modul runtime .NET, aby se na počítači nemusel instalovat. | |
--target-runtime <RUNTIME_IDENTIFIER> |
-r |
Cílové runtime, které je třeba seskupit. |
Běžné možnosti jsou uvedené výše.
dotnet ef migrations has-pending-model-changes
Note
Tento příkaz byl přidán v EF Core 8.0.
Zkontroluje, jestli od poslední migrace nedošlo k nějakým změnám modelu.
Options:
Běžné možnosti jsou uvedené výše.
dotnet ef migrations list
Zobrazí seznam dostupných migrací.
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
Připojovací řetězec do databáze. Výchozí hodnota je ta, která je specifikována v AddDbContext nebo OnConfiguring. |
--no-connect |
Nepřipojujte se k databázi. |
Běžné možnosti jsou uvedené výše.
dotnet ef migrations remove
Odebere poslední migraci a vrátí zpět změny kódu, které byly provedeny pro nejnovější migraci.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Vraťte se k nejnovější migraci a vraťte zpět změny kódu i databáze, které byly provedeny pro nejnovější migraci. Pokračuje v vrácení zpět pouze změny kódu v případě, že dojde k chybě při připojování k databázi. |
--connection <CONNECTION> |
Připojovací řetězec do databáze. Výchozí je ten uvedený v AddDbContext nebo OnConfiguring. Přidáno v EF Core 11. |
|
--offline |
Odeberte migraci bez připojení k databázi. Přidáno v EF Core 11. |
Běžné možnosti jsou uvedené výše.
Note
Možnosti --offline a --force nelze použít společně, protože --force vyžaduje připojení k databázi pro kontrolu, zda byla migrace aplikována před jejím vrácením.
dotnet ef migrations script
Generuje skript SQL z migrací.
Arguments:
| Argument | Description |
|---|---|
<FROM> |
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> |
Koncová migrace. Výchozí hodnota je poslední migrace. |
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Soubor pro zápis skriptu. |
--idempotent |
-i |
Vygenerujte skript, který lze použít v databázi při jakékoli migraci. |
--no-transactions |
Negenerujte příkazy transakcí SQL. |
Běžné možnosti jsou uvedené výše.
Následující příklad vytvoří skript pro migraci InitialCreate:
dotnet ef migrations script 0 InitialCreate
Následující příklad vytvoří skript pro všechny migrace po migraci InitialCreate.
dotnet ef migrations script 20180904195021_InitialCreate