Mi az az Entity Framework Core?
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.