Sobes.tech
Middle

Ako načítava Entity Framework entity do databázy?

sobes.tech AI

Odpoveď od AI

Entity Framework načítava entity do databázy prostredníctvom tvorby SQL dopytov na vloženie, aktualizáciu alebo odstránenie údajov na základe zmien sledovaných v dátovom kontexte a ich následného vykonania.

Proces zahŕňa:

  1. Sledovanie zmien: DbContext sleduje stav každej entity (Pridané, Upravené, Odstránené, Nezmenené).
  2. Generovanie príkazov: Na základe sledovaných zmien Entity Framework generuje príslušné SQL príkazy (INSERT, UPDATE, DELETE).
  3. Vykonanie príkazov: Vygenerované príkazy sa odosielajú do databázy a vykonávajú.

Príklad uloženia pridané entity:

// Vytvorenie dátového kontextu
using (var context = new MyDbContext())
{
    // Vytvorenie novej entity
    var newUser = new User { Name = "Ivan" };

    // Pridanie entity do kontextu
    context.Users.Add(newUser);

    // Uloženie zmien do databázy
    context.SaveChanges();
}

V tomto príklade context.SaveChanges() iniciuje proces načítania. EF generuje SQL dopyt typu INSERT INTO Users (Name) VALUES ('Ivan'); a vykoná ho v databáze.

Pri aktualizácii entity:

using (var context = new MyDbContext())
{
    // Získanie entity
    var userToUpdate = context.Users.Find(1);

    // Zmena vlastnosti
    userToUpdate.Name = "Petr";

    // Uloženie zmien
    context.SaveChanges();
}

Tu SaveChanges() iniciuje generovanie a vykonanie SQL dopytu UPDATE Users SET Name = 'Petr' WHERE Id = 1;.

Pri odstránení entity:

using (var context = new MyDbContext())
{
    // Získanie entity
    var userToDelete = context.Users.Find(2);

    // Odstránenie entity z kontextu
    context.Users.Remove(userToDelete);

    // Uloženie zmien
    context.SaveChanges();
}

SaveChanges() v tomto prípade povedie k vygenerovaniu a vykonaniu SQL dopytu DELETE FROM Users WHERE Id = 2;.

Entity Framework Core tiež podporuje možnosť dávkového ukladania (batch saving), keď sa viaceré operácie INSERT, UPDATE, DELETE spoja do jedného alebo viacerých balíkov pre efektívnejšie odoslanie do databázy. To závisí od poskytovateľa databázy a jeho možností.