Megosztás a következőn keresztül:


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 --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 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 OnConfiguringlesz.

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

További erőforrások