Megosztás:


Entity Framework Core-eszközökre vonatkozó referencia – .NET 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 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 --project lehetőséggel megadhat egy másik projektet célprojektként.

  • 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 --startup-project beállítással megadhat egy másik projektet indítási projektként.

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

Additional resources