Entity Framework Core-eszközökre vonatkozó referencia – Package Manager-konzol a Visual Studióban
Az Entity Framework Core Csomagkezelő konzoljának (PMC) eszközei tervezési idejű fejlesztési feladatokat hajtanak végre. Például létrehoznak migrálásokat, migrálásokat alkalmaznak, és kódokat hoznak létre egy modellhez egy meglévő adatbázis alapján. A parancsok a Visual Studióban futnak a Package Manager-konzolhasználatával. Ezek az eszközök a .NET-keretrendszerrel és a .NET Core-projektekkel is működnek.
Ha nem a Visual Studiót használja, javasoljuk, hogy ehelyett az EF Core parancssori eszközöket. A .NET Core CLI-eszközök platformfüggetlenek, és parancssorban futnak.
Figyelmeztetés
Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. Az éles környezetben futó alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.
Az eszközök telepítése
Telepítse a Package Manager konzoleszközöket az alábbi parancs futtatásával Package Manager-konzol:
Install-Package Microsoft.EntityFrameworkCore.Tools
Frissítse az eszközöket az alábbi parancs futtatásával a Package Manager Consoleablakában.
Update-Package Microsoft.EntityFrameworkCore.Tools
A telepítés ellenőrzése
Ellenőrizze, hogy az eszközök telepítve vannak-e a következő parancs futtatásával:
Get-Help about_EntityFrameworkCore
A kimenet így néz ki (nem árulja el a használt eszközök melyik verzióját):
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
TOPIC
about_EntityFrameworkCore
SHORT DESCRIPTION
Provides information about the Entity Framework Core Package Manager Console Tools.
<A list of available commands follows, omitted here.>
Az eszközök használata
Az eszközök használata előtt:
- Ismerje meg a cél- és az indítási projekt közötti különbséget.
- Megtudhatja, hogyan használhatja az eszközöket .NET Standard osztálykódtárakkal.
- Az ASP.NET Core-projektek esetében állítsa be a környezetet.
Cél- és indítási projekt
A parancsok egy projekt és egy indítási projektrevonatkoznak.
A projektcélprojektként is ismert, mert a parancsok fájlokat adnak hozzá vagy távolítanak el. Alapértelmezés szerint a Csomagkezelő konzol által kiválasztott projekt az Alapértelmezett projekt, ami a célprojekt. A
paraméterrel megadhat egy másik projektet célprojektként.-Project
A startupprojekt az, amelyet az eszközök létrehoznak és futtatnak. Az eszközöknek a tervezéskor végre kell hajtaniuk az alkalmazáskódot, hogy információt szerezzenek a projektről, például az adatbázis kapcsolati sztringjéről és a modell konfigurációjáról. Alapértelmezés szerint a MegoldáskezelőIndítási projekt az indítási projekt. A
paraméterrel megadhat egy másik projektet indítási projektként.-StartupProject
Az indítási projekt és a célprojekt gyakran ugyanaz a projekt. Egy tipikus forgatókönyv, amikor különálló projektekről van szó, amikor:
- Az EF Core-környezet és az entitásosztályok egy .NET Core-osztálytárban találhatók.
- A .NET Core-konzolalkalmazás vagy -webalkalmazás az osztálytárra hivatkozik.
A migrálási kódokat az EF Core-környezettől is el lehet helyezni egy osztálytárban.
Egyéb cél-keretrendszerek
A Package Manager konzoleszközök .NET Core- vagy .NET-keretrendszerprojektekkel működnek. Előfordulhat, hogy azok az alkalmazások, amelyeknél az EF Core-modell egy .NET Standard osztálytárban található, nem rendelkeznek .NET Core- vagy .NET-keretrendszerprojektekkel. Ez igaz például a Xamarin és az Univerzális Windows Platform-alkalmazásokra. Ilyen esetekben létrehozhat egy .NET Core- vagy .NET-keretrendszer-konzolalkalmazás-projektet, amelynek egyetlen célja, hogy indítási projektként működjön az eszközökhöz. A projekt lehet egy valós kód nélküli, hamis projekt – csak az eszközkezelés céljának megadására van szükség.
Fontos
A Xamarin.Android, a Xamarin.iOS és a Xamarin.Mac mostantól közvetlenül a .NET-be van integrálva (a .NET 6-tól kezdve), androidos .NET, iOS-hez .NET és macOS esetén .NET néven. Ha ezeket a projekttípusokat ma készíti el, a folyamatos támogatás érdekében .NET SDK-stílusú projektekre kell frissíteni őket. További információ a Xamarin-projektek .NET-re való frissítéséről: Frissítés xamarinról .NET & .NET MAUI dokumentációra.
Miért van szükség próbaprojektre? Ahogy korábban említettük, az eszközöknek a tervezéskor végre kell hajtaniuk az alkalmazáskódot. Ehhez a .NET Core vagy a .NET-keretrendszer futtatókörnyezetét kell használniuk. Ha az EF Core-modell olyan projektben van, amely a .NET Core-t vagy a .NET-keretrendszert célozza, az EF Core-eszközök kölcsönkérik a futtatókörnyezetet a projektből. Ezt nem tehetik meg, ha az EF Core-modell egy .NET Standard osztálykódtárban található. A .NET Standard nem tényleges .NET-implementáció; ez olyan API-k specifikációja, amelyeket a .NET-implementációknak támogatniuk kell. Ezért a .NET Standard nem elegendő az EF Core-eszközök számára az alkalmazáskód végrehajtásához. Az indítási projektként létrehozott próbaprojekt egy konkrét célplatformot biztosít, amelybe az eszközök betölthetik a .NET Standard osztálytárat.
ASP.NET Core-környezet
A parancssorban megadhatja ASP.NET Core-projektek környezeti. Ezt és minden további argumentumot a Program.CreateHostBuildernek ad át.
Update-Database -Args '--environment Production'
Gyakori paraméterek
Az alábbi táblázat az összes EF Core-parancsra jellemző paramétereket mutatja be:
Paraméter | Leírás |
---|---|
-Context <String> |
A használni kívánt DbContext osztály. Csak osztálynév vagy teljesen kvalifikált névtérrel rendelkező osztálynév. Ha ez a paraméter nincs megadva, az EF Core megkeresi a környezeti osztályt. Ha több környezeti osztály is létezik, ez a paraméter szükséges. |
-Project <String> |
A célprojekt. Ha ez a paraméter nincs megadva, a Alapértelmezett projekt a Package Manager konzol számára lesz a célprojekt. |
-StartupProject <String> |
Az indítási projekt. Ha ez a paraméter nincs megadva, a Indítási projektMegoldás tulajdonságai lesz a célprojekt. |
-Args <String> |
Az alkalmazásnak átadott argumentumok. |
-Verbose |
Részletes kimenet megjelenítése. |
A parancsokkal kapcsolatos súgóinformációk megjelenítéséhez használja a PowerShell Get-Help
parancsát.
Borravaló
A Context
, Project
és StartupProject
paraméterek támogatják a tabulátorbővítést.
Add-Migration
Hozzáad egy új migrációt.
Paraméterek:
Paraméter | Leírás |
---|---|
-Name <String> |
Az áttelepítés neve. Ez egy pozícióparaméter, és kötelező. |
-OutputDir <String> |
A könyvtár a fájlok kimenetének tárolására szolgál. Az elérési utak a célprojekt könyvtárához vannak viszonyítva. Alapértelmezés szerint "Migrálások". |
-Namespace <String> |
A létrehozott osztályokhoz használandó névtér. A kimeneti könyvtárból létrehozandó alapértelmezett értékek. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Bundle-Migration
Létrehoz egy végrehajtható fájlt az adatbázis frissítéséhez.
Paraméterek:
Paraméter | Leírás |
---|---|
-Output <String> |
A létrehozandó végrehajtható fájl elérési útja. |
-Force |
Meglévő fájlok felülírása. |
-SelfContained |
Csomagolja be a .NET-futtatókörnyezetet is, hogy ne kelljen telepíteni a gépre. |
-TargetRuntime <String> |
A cél futtatókörnyezet, amelyhez csomagot készítünk. |
-Framework <String> |
A cél keretrendszer. Alapértelmezés szerint az első a projektben. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Drop-Database
Adatbázis törlése
Paraméterek:
Paraméter | Leírás |
---|---|
-WhatIf |
Mutassa meg, melyik adatbázis kerül törlésre, de ne törölje. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Get-DbContext
Felsorolja és lekéri az elérhető DbContext
típusokkal kapcsolatos információkat.
A gyakori paraméterek a fenti felsorolásban találhatók.
Get-Migration
Listázza az elérhető áttelepítéseket.
Paraméterek:
Paraméter | Leírás |
---|---|
-Connection <String> |
Az adatbázis kapcsolati sztringje. Az AddDbContextben vagy az OnConfiguringban megadott alapértelmezett érték. |
-NoConnect |
Ne csatlakozzon az adatbázishoz. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Optimize-DbContext
Létrehozza a DbContext
által használt modell lefordított verzióját.
További információért lásd az Összeállított modellek részét.
Paraméterek:
Paraméter | Leírás |
---|---|
-OutputDir <String> |
A fájlokat tartalmazó könyvtár. Az elérési utak a projektkönyvtárhoz vannak viszonyítva. |
-Namespace <String> |
Az összes létrehozott osztályhoz használandó névtér. Alapértelmezés szerint a gyökérnévtérből és a kimeneti könyvtárból, valamint a CompiledModels -ból generáltan. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Jegyzet
A PMC-eszközök jelenleg nem támogatják a NativeAOT fordításhoz és az előre összeállított lekérdezésekhez szükséges kód generálását.
Az alábbi példa az alapértelmezett értékeket használja, és akkor működik, ha csak egy DbContext
van a projektben:
Optimize-DbContext
Az alábbi példa a megadott névvel optimalizálja a modellt a környezethez, és egy külön mappába és névtérbe helyezi:
Optimize-DbContext -OutputDir Models -Namespace BlogModels -Context BlogContext
Remove-Migration
Eltávolítja az utolsó migrálást (visszaállítja az áttelepítéshez végrehajtott kódmódosításokat).
Paraméterek:
Paraméter | Leírás |
---|---|
-Force |
Állítsa vissza a migrálást (állítsa vissza az adatbázisra alkalmazott módosításokat). |
A gyakori paraméterek a fenti felsorolásban találhatók.
Scaffold-DbContext
Egy adatbázis DbContext
és entitástípusainak kódját hozza létre. Ahhoz, hogy Scaffold-DbContext
entitástípust generáljon, az adatbázistáblának elsődleges kulccsal kell rendelkeznie.
Paraméterek:
A gyakori paraméterek a fenti felsorolásban találhatók.
Példa:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Példa arra, hogy csak a kijelölt táblák generálódnak és a környezet egy külön mappában, egy megadott névvel és névtérrel jön létre:
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
Az alábbi példa beolvassa a kapcsolati sztringet akonfiguráció használatával.
Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer
Script-DbContext
SQL-szkriptet hoz létre a DbContextből. Megkerüli a migrálásokat.
Paraméterek:
Paraméter | Leírás |
---|---|
-Output <String> |
A fájl, amelybe az eredményt meg szeretné írni. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Script-Migration
Létrehoz egy SQL-szkriptet, amely az egyik kijelölt migrálás minden módosítását egy másik kijelölt migrálásra alkalmazza.
Paraméterek:
Paraméter | Leírás |
---|---|
-From <String> |
A kezdeti migrálás. Az áttelepítések név vagy azonosító alapján azonosíthatók. A 0 szám egy speciális eset, amely azt jelenti, hogy azelső áttelepítése előtt. Alapértelmezés szerint 0. |
-To <String> |
A befejező migrálás. Alapértelmezettként az utolsó migrációt választja. |
-Idempotent |
Hozzon létre egy szkriptet, amely bármilyen migráláskor használható az adatbázisban. |
-NoTransactions |
Ne hozzon létre SQL-tranzakciós utasításokat. |
-Output <String> |
A fájl, amelybe az eredményt meg szeretné írni. Ha ez a paraméter nincs megadva, a fájl egy létrehozott névvel jön létre az alkalmazás futtatókörnyezeti fájljaival megegyező mappában, például: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/. |
A gyakori paraméterek a fenti felsorolásban találhatók.
Borravaló
A To
, From
és Output
paraméterek támogatják a tabulátorbővítést.
Az alábbi példa létrehoz egy szkriptet az InitialCreate migrálásához (áttelepítés nélküli adatbázisból) az áttelepítés nevével.
Script-Migration 0 InitialCreate
Az alábbi példa egy szkriptet hoz létre az InitialCreate migrálás utáni összes áttelepítéshez az áttelepítési azonosító használatával.
Script-Migration 20180904195021_InitialCreate
Update-Database
Frissíti az adatbázist az utolsó áttelepítésre vagy egy adott migrálásra.
Paraméter | Leírás |
---|---|
-Migration <String> |
A célpont áttelepítése. Az áttelepítések név vagy azonosító alapján azonosíthatók. A 0 szám egy speciális eset, amely -t jelent az első migráció előtt, és az összes migrációt visszavonja. Ha nincs megadva migráció, az utasítás alapértelmezés szerint az utolsó migrációt választja. |
-Connection <String> |
Az adatbázis kapcsolati karaktersorozata. Az alapértelmezett érték a AddDbContext vagy OnConfiguring . |
A gyakori paraméterek a fenti felsorolásban találhatók.
Borravaló
A Migration
paraméter támogatja a tabulátorbővítést.
Az alábbi példa az összes áttelepítést visszaállítja.
Update-Database 0
Az alábbi példák egy adott migrálásra frissítik az adatbázist. Az első az áttelepítés nevét, a második pedig a migrálási azonosítót és egy megadott kapcsolatot használja:
Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string