Mi az az Entity Framework Core?

Befejeződött

A legtöbb nemtriviális webalkalmazásnak megbízhatóan kell futtatnia az adatokon végzett műveleteket, például létrehozást, olvasást, frissítést és törlést (CRUD). Emellett meg kell őrizniük a műveletek által végrehajtott módosításokat az alkalmazás újraindítása között. Bár a .NET-alkalmazásokban különböző lehetőségek állnak rendelkezésre az adatok megőrzésére, az Entity Framework (EF) Core felhasználóbarát megoldás, és számos .NET-alkalmazáshoz kiválóan alkalmas.

Az EF Core ismertetése

Az EF Core egy egyszerűsített, bővíthető, nyílt forráskód és platformfüggetlen adatelérési technológia .NET-alkalmazásokhoz.

Az EF Core objektum-relációs mapperként szolgálhat, amely:

  • Lehetővé teszi a .NET-fejlesztők számára, hogy .NET-objektumokkal dolgozzanak egy adatbázissal.
  • Kiküszöböli az általában írandó adatelérési kódok többségének szükségességét.

Az EF Core számos népszerű adatbázist támogat, köztük az SQLite-t, a MySQL-t, a PostgreSQL-t, az Oracle-t és a Microsoft SQL Servert.

A modell

Az EF Core használatával az adathozzáférés egy modell használatával történik. A modell entitásosztályokból és környezeti objektumból áll, amelyek az adatbázissal való munkamenetet jelölik. A környezeti objektum lehetővé teszi az adatok lekérdezését és mentését.

Az entitásosztály

Ebben a forgatókönyvben egy pizzaáruház-felügyeleti API-t implementál, így egy entitásosztályt Pizza használ. A pizzák a boltban van egy név és egy leírás. Szükségük van egy azonosítóra is, amely lehetővé teszi az API és az adatbázis számára az azonosításukat. Az Pizza alkalmazásban használt entitásosztály azonosítja a pizzákat:

namespace PizzaStore.Models 
{
  public class Pizza
  {
      public int Id { get; set; }
      public string? Name { get; set; }
      public string? Description { get; set; }
  }
}

A környezeti osztály

Ez az alkalmazás csak egy entitásosztálysal rendelkezik, de a legtöbb alkalmazás több entitásosztálysal rendelkezik. A környezeti osztály feladata az adatok lekérdezése és mentése az entitásosztályokra, valamint az adatbázis-kapcsolat létrehozása és kezelése.

CRUD-műveletek végrehajtása az EF Core-val

Az EF Core konfigurálása után használhatja CRUD-műveletek végrehajtására az entitásosztályokon. Ezután c# osztályokkal fejleszthet, és az adatbázis-műveleteket a környezeti osztályra delegálhatja. Az adatbázis-szolgáltatók viszont lefordítják az adatbázis-specifikus lekérdezési nyelvre. Ilyen például az SQL egy relációs adatbázishoz. A lekérdezések mindig az adatbázison futnak, még akkor is, ha az eredményben visszaadott entitások már léteznek a környezetben.

Adatok lekérdezése

A környezeti objektum minden entitástípushoz elérhetővé tesz egy gyűjteményosztályt. Az előző példában a környezeti osztály egy objektumgyűjteményt Pizza tesz elérhetővé.Pizzas Mivel a környezeti osztálynak van egy példánya, lekérdezheti az adatbázist az összes pizzához:

var pizzas = await db.Pizzas.ToListAsync();

Adat beszúrása

Ugyanezzel a környezeti objektummal szúrhat be egy új pizzát:

await db.pizzas.AddAsync(
    new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });

Adatok törlése

A törlési műveletek egyszerűek. Csak az elem azonosítóját kell törölni:

var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
db.pizzas.Remove(pizza);

Adatok frissítése

Hasonlóképpen frissíthet egy meglévő pizzát is:

int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" };
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
    //Handle error
}
pizza.Description = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();

Az EF Core memóriabeli adatbázisának használata

Az EF Core tartalmaz egy memórián belüli adatbázis-szolgáltatót, amely az alkalmazás teszteléséhez használható. A memórián belüli adatbázis-szolgáltató teszteléshez és fejlesztéshez hasznos, de éles környezetben nem használható. A következő leckében a memórián belüli adatbázis-szolgáltatóval fog létrehozni egy adatbázist, és CRUD-műveleteket hajt végre rajta.