Sobes.tech
Middle

Milyen megközelítések léteznek az EF Core ökoszisztémában?

sobes.tech MI

Válasz az MI-től

Az Entity Framework Core ökoszisztémájában három fő megközelítés (approach) létezik az adatbázisséma kezelésére:

  1. Database First: Az adatbázis séma már létezik, és az EF Core a séma alapján generál modell osztályokat (entities) és DbContext-et.

    • Előnyök: Gyors kezdés meglévő adatbázissal, a séma teljes mértékben az adatbázis irányítása alatt áll.
    • Hátrányok: A változtatások az adatbázisban újra generálást igényelnek, ami felülírhatja a testreszabott kódot.
    // Példa parancs meglévő adatbázisból történő generáláshoz
    // Scaffold-DbContext "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    
  2. Code First: Modell osztályokat (entities) és DbContext-et definiálsz C#-ban. Az EF Core a definíciók alapján vagy létrehozza, vagy frissíti az adatbázis sémáját migrációk segítségével.

    • Előnyök: Teljes kontroll a modellek felett, integráció az alkalmazás kódjával, migrációk használata a séma változtatásainak kezelésére.
    • Hátrányok: Migrációk kezelése szükséges, a séma változásai mindig a kódban kezdődnek.
    // Példa a Code First megközelítés modell osztályára
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
    
  3. Model First: Ez a megközelítés, bár a régebbi EF verziókban (pre-Core) jelen volt, az EF Core-ban nem natív és önálló megközelítés ugyanúgy, mint a Database First vagy a Code First. Lényegében a Model First az EF Core-ban a modellek kódba írását (mint a Code First esetében) és azok alapján adatbázis generálását jelenti. Nincs külön vizuális modelltervező, mint az EF 6-ban volt, ezért az EF Core kontextusában gyakran a Code First egy speciális eseteként kezelik, ahol manuálisan írja le a modellt anélkül, hogy meglévő adatbázist használnának.

A megközelítések fő jellemzői:

Megközelítés Kezdés Adatbázis séma kezelése Változtatási eszközök
Database First Létező adatbázis Manuálisan az adatbázisban Scaffold-DbContext
Code First Modell osztályok és DbContext C#-ban EF Core migrációk Add-Migration, Update-Database
Model First (EF Core kontextusában) Modell osztályok és DbContext C#-ban (nincs meglévő adatbázis) EF Core migrációk vagy generálás futás közben Add-Migration, Update-Database

A megközelítés kiválasztása a projekt kezdeti feltételeitől és a csapat preferenciáitól függ. A Code First a legelterjedtebb megközelítés az EF Core új projektjeiben a rugalmasság és a fejlesztési folyamatba való integráció miatt.