Entity Framework Core-eszközökre vonatkozó referencia – .NET Core CLI
Az Entity Framework Core parancssori felületi 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 platformfüggetlen dotnet parancs bővítményei, amely a .NET Core SDK része. Ezek az eszközök .NET Core-projektekkel működnek.
A Visual Studio használatakor fontolja meg a Package Manager konzoleszközök használatát a CLI-eszközök helyett. A Package Manager konzol eszközei automatikusan:
- A Package Manager konzol kiválasztott aktuális projekttel működik anélkül, hogy manuálisan kellene könyvtárat váltania.
- Megnyitja a parancs által létrehozott fájlokat a parancs befejezése után.
- A parancsok, paraméterek, projektnevek, környezettípusok és áttelepítési nevek lapkiegészítését tartalmazza.
Az eszközök telepítése
dotnet ef
globális vagy helyi eszközként is telepíthető. A fejlesztők többsége inkább az alábbi paranccsal telepíti a dotnet ef
globális eszközként:
dotnet tool install --global dotnet-ef
Ha helyi eszközként szeretné használni, állítsa vissza egy olyan projekt függőségeit, amelyek eszközfüggőségként deklarálják azt egy eszközjegyzékfájlhasználatával.
Frissítse az eszközt a következő paranccsal:
dotnet tool update --global dotnet-ef
Ahhoz, hogy egy adott projekt eszközeit használni tudja, hozzá kell adnia a Microsoft.EntityFrameworkCore.Design
csomagot.
dotnet add package Microsoft.EntityFrameworkCore.Design
Telepítés ellenőrzése
Futtassa a következő parancsokat annak ellenőrzéséhez, hogy az EF Core CLI-eszközök megfelelően vannak-e telepítve:
dotnet ef
A parancs kimenete azonosítja a használt eszközök verzióját:
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065
<Usage documentation follows, not shown.>
Az eszközök frissítése
A dotnet tool update --global dotnet-ef
használatával frissítse a globális eszközöket a legújabb elérhető verzióra. Ha a projektben helyileg telepített eszközökkel rendelkezik, használja a dotnet tool update dotnet-ef
. Telepítsen egy adott verziót úgy, hogy hozzáfűzi --version <VERSION>
a parancshoz. További részletekért tekintse meg a dotnet eszköz dokumentációjának Frissítés szakaszát.
Az eszközök használata
Az eszközök használata előtt előfordulhat, hogy létre kell hoznia egy indítási projektet, vagy be kell állítania a környezetet.
Célprojekt é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 az aktuális könyvtárban lévő projekt a célprojekt. A
lehetőséggel megadhat egy másik projektet célprojektként.--project
Az startup projekt 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 az aktuális könyvtárban lévő projekt az indítási projekt. A
beállítással megadhat egy másik projektet indítási projektként.--startup-project
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 CLI-eszközök .NET Core- és .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-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-futtatókörnyezetet 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.
dotnet ef database update -- --environment Production
Borravaló
A --
jogkivonat arra utasítja dotnet ef
-et, hogy az utána következőket argumentumként kezelje, és ne próbálja meg opciókként elemezni őket. A dotnet ef
által nem használt további argumentumokat a rendszer továbbítja az alkalmazásnak.
Gyakori beállítások
Opció | Rövid | Leírás |
---|---|---|
--json |
JSON-kimenet megjelenítése. | |
--context <DBCONTEXT> |
-c |
A használni kívánt DbContext osztály. Csak osztálynév vagy teljes névtérrel rendelkező osztálynév. Ha ez a beállítás nincs megadva, az EF Core megkeresi a környezeti osztályt. Ha több környezeti osztály is létezik, ez a beállítás szükséges. |
--project <PROJECT> |
-p |
A célprojekt projektmappájának relatív elérési útja. Az alapértelmezett érték az aktuális mappa. |
--startup-project <PROJECT> |
-s |
Az indítási projekt projektmappájának relatív elérési útja. Az alapértelmezett érték az aktuális mappa. |
--framework <FRAMEWORK> |
A célkeretrendszer névjegye a cél-keretrendszerhez. Akkor használható, ha a projektfájl több cél keretrendszert határoz meg, és ki szeretne választani egyet közülük. | |
--configuration <CONFIGURATION> |
A buildkonfiguráció, például: Debug vagy Release . |
|
--runtime <IDENTIFIER> |
A cél futtatókörnyezet azonosítója a csomagok visszaállításához. A futtatókörnyezet-azonosítók (RID) listáját a RID katalógusban láthatja. | |
--no-build |
Ne hozza létre a projektet. Arra tervezték, hogy akkor használják, amikor a build up-to-date állapotban van. | |
--help |
-h |
Súgóinformációk megjelenítése. |
--verbose |
-v |
Részletes kimenet megjelenítése. |
--no-color |
Ne színezd ki a kimenetet. | |
--prefix-output |
Előtagolja a kimenetet szinttel. |
A rendszer minden további argumentumot továbbít az alkalmazásnak.
dotnet ef database drop
Törli az adatbázist.
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--force |
-f |
Ne erősítse meg. |
--dry-run |
Mutasd meg, hogy melyik adatbázis lenne elvetve, de ne töröld. |
A fenti gyakori lehetőségek láthatók.
dotnet ef database update
Frissíti az adatbázist az utolsó áttelepítésre vagy egy adott migrálásra.
Érvek:
Érvelés | Leírás |
---|---|
<MIGRATION> |
A célzott migráció. Az áttelepítések név vagy azonosító alapján azonosíthatók. A nullás szám egy speciális eset, amely azt jelenti, hogy az első migráció előtt, és minden migrációt visszafordít. Ha nincs megadva migráció, a parancs alapértelmezés szerint az utolsó migrációt használja. |
Beállítások:
Opció | Leírás |
---|---|
--connection <CONNECTION> |
Az adatbázis kapcsolati karakterlánca. Az alapértelmezett érték a megadott AddDbContext vagy OnConfiguring lesz. |
A fenti általános lehetőségek vannak felsorolva.
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:
dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string
dotnet ef dbcontext info
Információt szerez egy DbContext
típusról.
A fenti gyakori lehetőségek láthatók.
dotnet ef dbcontext list
Listázza az elérhető DbContext
típusokat.
A közös lehetőségek fent vannak felsorolva.
dotnet ef dbcontext optimize
Létrehozza a DbContext
által használt modell lefordított verzióját, és előfordítja a lekérdezéseket.
További információt Kompilált modellek című témakörben talál.
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--output-dir <PATH> |
-o |
A fájlokat tartalmazó könyvtár. Az elérési utak relatívak a projektkönyvtárhoz. |
--namespace <NAMESPACE> |
-n |
Az összes létrehozott osztályhoz használandó névtér. Alapértelmezettként a gyökérnévtérből és a kimeneti könyvtárból generálódik, plusz a CompiledModels . |
--suffix <SUFFIX> |
Az összes létrehozott fájl nevéhez csatolandó utótag. Például .g jelezhető, hogy ezek a fájlok generált kódot tartalmaznak |
|
--no-scaffold |
Ne hozzon létre kompilált modellt. Ezt akkor használja a rendszer, ha a lefordított modell már létrejött. | |
--precompile-queries |
Előre összeállított lekérdezések létrehozása. Ez a NativeAOT-fordításhoz szükséges, ha a célprojekt lekérdezéseket tartalmaz | |
--nativeaot |
Generáljon további kódot a kompilált modellben, amely a NativeAOT fordításához és az előre összeállított lekérdezésekhez szükséges. |
Jegyzet
A NativeAOT-támogatás és az előre összeállított lekérdezések kísérletinek számítanak az EF 9-ben, és a következő kiadásban jelentősen megváltozhatnak.
A fenti gyakori lehetőségek láthatók.
Az alábbi példa az alapértelmezett beállításokat használja, és akkor működik, ha csak egy DbContext
van a projektben:
dotnet ef dbcontext optimize
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:
dotnet ef dbcontext optimize -o Models -n BlogModels -c BlogContext
dotnet ef dbcontext scaffold
Egy adatbázis DbContext
és entitástípusainak kódját hozza létre. Ahhoz, hogy ez a parancs létrehozhasson egy entitástípust, az adatbázistáblának elsődleges kulccsal kell rendelkeznie.
Érvek:
Érvelés | Leírás |
---|---|
<CONNECTION> |
Az adatbázis kapcsolati karakterlánca. Az ASP.NET Core 2.x-projektek esetében az érték lehet név=<kapcsolati sztring neve>. Ebben az esetben a név a projekthez beállított konfigurációs forrásokból származik. |
<PROVIDER> |
A használni kívánt szolgáltató. Általában ez a NuGet-csomag neve, például: Microsoft.EntityFrameworkCore.SqlServer . |
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--data-annotations |
-d |
Attribútumok használatával konfigurálja a modellt (ahol lehetséges). Ha ez a beállítás nincs megadva, a rendszer csak a fluent API-t használja. |
--context <NAME> |
-c |
A létrehozandó DbContext osztály neve. |
--context-dir <PATH> |
A DbContext osztályfájlt elhelyezni kívánt könyvtár. Az elérési utak a projektkönyvtárhoz vannak viszonyítva. A névterek a mappanevekből származnak. |
|
--context-namespace <NAMESPACE> |
A létrehozott DbContext osztályhoz használandó névtér. Megjegyzés: felülírja --namespace . |
|
--force |
-f |
Meglévő fájlok felülírása. |
--output-dir <PATH> |
-o |
Az entitásosztály fájljait tartalmazó könyvtár. Az elérési utak a projekt könyvtárához képest vannak meghatározva. |
--namespace <NAMESPACE> |
-n |
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 jön létre. |
--schema <SCHEMA_NAME>... |
A táblák és nézetek sémái, amelyek entitástípusokat hoznak létre. Több séma megadásához ismételje meg a --schema mindegyiknél. Ha ez a beállítás nincs megadva, a rendszer minden sémát tartalmaz. Ha ezt a lehetőséget használja, akkor a séma összes táblája és nézete szerepelni fog a modellben, még akkor is, ha azok nem szerepelnek explicit módon a --table használatával. |
|
--table <TABLE_NAME>... |
-t |
Az entitástípusok létrehozásához szükséges táblák és nézetek. Több tábla megadásához ismételje meg a -t vagy --table mindegyiknél. Egy adott séma táblázatai vagy nézetei a "schema.table" vagy a "schema.view" formátum használatával vehetők fel. Ha ez a beállítás nincs megadva, az összes tábla és nézet megjelenik. |
--use-database-names |
Táblázat-, nézet-, szekvencia- és oszlopneveket pontosan az adatbázisban megjelenő módon használjon. Ha ez a beállítás nincs megadva, az adatbázisnevek a C#-névstílus konvencióinak jobban megfelelőre módosulnak. | |
--no-onconfiguring |
Letiltja a OnConfiguring metódus létrehozását a létrehozott DbContext osztályban. |
|
--no-pluralize |
Ne használja a pluralizálót. |
A fenti gyakori lehetőségek láthatók.
Az alábbi példa az összes sémát és táblát összefésíti, és az új fájlokat a Modellek mappába helyezi.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
Az alábbi példa csak a kiválasztott táblákat generálja, és egy külön mappában hoz létre kontextust egy megadott név és névtér használatával.
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
Az alábbi példa beolvassa a kapcsolati karakterláncot a projekt konfigurációs beállításaiból a Secret Manager eszköz használatával.
dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer
Az alábbi példa kihagyja egy OnConfiguring
metódus sablonjának létrehozását. Ez akkor lehet hasznos, ha a DbContextet az osztályon kívül szeretné konfigurálni. Például ASP.NET Core-alkalmazások általában a Startup.ConfigureServices szolgáltatásban konfigurálják.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
SQL-szkriptet hoz létre a DbContextből. Megkerül minden migrálást.
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--output <FILE> |
-o |
A fájl, amelybe az eredményt meg szeretné írni. |
A fenti gyakori lehetőségek láthatók.
dotnet ef migrations add
Új migrációt ad hozzá.
Érvek:
Vita | Leírás |
---|---|
<NAME> |
Az áttelepítés neve. |
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--output-dir <PATH> |
-o |
A könyvtár a fájlok kimenetéhez van használva. Az elérési utak a célprojekt könyvtárához vannak viszonyítva. Alapértelmezés szerint "Migrálás". |
--namespace <NAMESPACE> |
-n |
A létrehozott osztályokhoz használandó névtér. A kimeneti könyvtárból létrehozandó alapértelmezett értékek. |
A fenti gyakori lehetőségek láthatók.
dotnet ef migrations bundle
Létrehoz egy végrehajtható fájlt az adatbázis frissítéséhez.
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--output <FILE> |
-o |
A létrehozandó végrehajtható fájl elérési útja. |
--force |
-f |
Meglévő fájlok felülírása. |
--self-contained |
Csomagolja be a .NET-futtatókörnyezetet is, hogy ne kelljen telepíteni a gépre. | |
--target-runtime <RUNTIME_IDENTIFIER> |
-r |
A cél futtatókörnyezet, amelyhez a csomagot kell készíteni. |
A fenti általános lehetőségek vannak felsorolva.
dotnet ef migrations has-pending-model-changes
Jegyzet
Ez a parancs az EF Core 8.0-ban lett hozzáadva.
Ellenőrzi, hogy történt-e módosítás a modellen a legutóbbi migrálás óta.
Beállítások:
A fenti gyakori lehetőségek láthatók.
dotnet ef migrations list
Listázza az elérhető áttelepítéseket.
Beállítások:
Opció | Leírás |
---|---|
--connection <CONNECTION> |
Az adatbázis kapcsolati karakterlánca. Az alapértelmezett érték az AddDbContextben vagy az OnConfiguringban megadottak szerint van beállítva. |
--no-connect |
Ne csatlakozzon az adatbázishoz. |
A fenti közös lehetőségek fel vannak sorolva.
dotnet ef migrations remove
Eltávolítja a legutóbbi migrálást, és visszaállítja a legújabb migráláshoz végrehajtott kódmódosításokat.
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--force |
-f |
Állítsa vissza a legújabb migrálást, és állítsa vissza a legújabb migráláshoz végrehajtott kód- és adatbázismódosításokat is. Továbbra is csak a kódváltozások visszaállítása történik, ha hiba történik az adatbázishoz való csatlakozás során. |
A fenti gyakori lehetőségek láthatók.
dotnet ef migrations script
SQL-szkriptet hoz létre a migrálásokból.
Érvek:
Érvelés | Leírás |
---|---|
<FROM> |
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 jelent az elsőelőtti áttelepítéskor. Alapértelmezés szerint 0. |
<TO> |
A migráció befejezése. Az utolsó migrálás alapértelmezett értéke. |
Beállítások:
Opció | Rövid | Leírás |
---|---|---|
--output <FILE> |
-o |
Az a fájl, amelybe a szkriptet írni szeretné. |
--idempotent |
-i |
Hozzon létre egy szkriptet, amely bármilyen migráláskor használható az adatbázisban. |
--no-transactions |
Ne hozzon létre SQL-tranzakciós utasításokat. |
A fenti gyakori lehetőségek láthatók.
Az alábbi példa létrehoz egy szkriptet az InitialCreate migrálásához:
dotnet ef migrations script 0 InitialCreate
Az alábbi példa egy szkriptet hoz létre az InitialCreate migrálása utáni összes áttelepítéshez.
dotnet ef migrations script 20180904195021_InitialCreate