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


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 -Project paraméterrel megadhat egy másik projektet célprojektként.

  • 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 -StartupProject paraméterrel 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 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:

Paraméter Leírás
-Connection <String> Az adatbázis kapcsolati karaktersorozata. 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. Ez egy pozícióparaméter, és kötelező.
-Provider <String> A használni kívánt szolgáltató. Általában ez a NuGet-csomag neve, például: Microsoft.EntityFrameworkCore.SqlServer. Ez egy pozícióparaméter, és kötelező.
-OutputDir <String> Az entitásosztály fájljait tartalmazó könyvtár. Az elérési utak a projektkönyvtárhoz vannak viszonyítva.
-ContextDir <String> A DbContext fájlt elhelyezni kívánt 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 jön létre.
-ContextNamespace <String> A létrehozott DbContext osztályhoz használandó névtér. Megjegyzés: felülírások -Namespace.
-Context <String> A létrehozandó DbContext osztály neve.
-Schemas <String[]> A táblák és nézetek sémái, amelyek entitástípusokat hoznak létre. Ha ez a paraméter 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.
-Tables <String[]> Az entitástípusok létrehozásához szükséges táblák és nézetek. 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 paraméter nincs megadva, a rendszer minden táblát és nézetet tartalmaz.
-DataAnnotations Attribútumok használatával konfigurálja a modellt (ahol lehetséges). Ha ez a paraméter nincs megadva, a rendszer csak a fluent API-t használja.
-UseDatabaseNames Táblázat-, nézet-, szekvencia- és oszlopneveket pontosan az adatbázisban megjelenő módon használjon. Ha ez a paraméter nincs megadva, az adatbázisnevek a C#-névstílus konvencióinak jobban megfelelőre módosulnak.
-Force Meglévő fájlok felülírása.
-NoOnConfiguring Ne hozzon létre DbContext.OnConfiguring.
-NoPluralize Ne használja a pluralizálót.

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

További erőforrások