Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 SDK része. Ezek az eszközök .NET-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
Verify installation
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.--projectAz 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-osztálytárban találhatók.
- A .NET-konzolalkalmazások vagy -webalkalmazások az osztálytárra hivatkoznak.
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- é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- vagy .NET-keretrendszerprojektekkel. Ez igaz például a Xamarin és az Univerzális Windows Platform-alkalmazásokra. Ilyen esetekben létrehozhat egy .NET-konzolalkalmazás-projektet, amelynek egyetlen célja az eszközök indítási projektjeként működni. 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.
Important
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-futtatókörnyezetet kell használniuk. Ha az EF Core-modell egy .NET- vagy .NET-keretrendszert célzó projektben van, az EF Core-eszközök kölcsönkérik a futtatókörnyezetet a projekttő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
Tip
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.
Common options
| Option | Short | Description |
|---|---|---|
--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.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Don't confirm. |
--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.
Arguments:
| Argument | Description |
|---|---|
<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. |
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
Az adatbázis kapcsolati karakterlánca. Az alapértelmezett érték a megadott AddDbContext vagy OnConfiguringlesz. |
A fenti gyakori lehetőségek láthatók.
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 fenti gyakori lehetőségek láthatók.
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.
Options:
| Option | Short | Description |
|---|---|---|
--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. |
Note
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.
Arguments:
| Argument | Description |
|---|---|
<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. |
Options:
| Option | Short | Description |
|---|---|---|
--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 relatívak a projektkönyvtárhoz. 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 relatívak a projektkönyvtárhoz. |
--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;Integrated Security=true;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
SQL-szkriptet hoz létre a DbContextből. Megkerül minden migrálást.
Options:
| Option | Short | Description |
|---|---|---|
--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á.
Arguments:
| Argument | Description |
|---|---|
<NAME> |
Az áttelepítés neve. |
Options:
| Option | Short | Description |
|---|---|---|
--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.
Options:
| Option | Short | Description |
|---|---|---|
--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 gyakori lehetőségek láthatók.
dotnet ef migrations has-pending-model-changes
Note
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.
Options:
A fenti gyakori lehetőségek láthatók.
dotnet ef migrations list
Listázza az elérhető áttelepítéseket.
Options:
| Option | Description |
|---|---|
--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 gyakori lehetőségek láthatók.
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.
Options:
| Option | Short | Description |
|---|---|---|
--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.
Arguments:
| Argument | Description |
|---|---|
<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. |
Options:
| Option | Short | Description |
|---|---|---|
--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