Sobes.tech
Middle

Kaip Entity Framework įkelia subjektus į duomenų bazę?

sobes.tech AI

Atsakymas iš AI

Entity Framework įkelia subjektus į duomenų bazę sudarydamas SQL užklausas įterpimui, atnaujinimui arba ištrynimui remiantis pakeitimais, stebimais duomenų kontekste, ir juos vėliau vykdydamas.

Procesas apima:

  1. Pakeitimų stebėjimas: DbContext stebi kiekvieno objekto būseną (Pridėta, Pakeista, Ištrinta, Nepakitusi).
  2. Komandų generavimas: Remiantis stebimais pakeitimais Entity Framework generuoja atitinkamas SQL komandas (INSERT, UPDATE, DELETE).
  3. Komandų vykdymas: Sugeneruotos komandos siunčiamos į duomenų bazę ir vykdomos.

Pavyzdys, kaip išsaugoti pridėtą objektą:

// Duomenų konteksto sukūrimas
using (var context = new MyDbContext())
{
    // Naujo objekto sukūrimas
    var newUser = new User { Name = "Ivan" };

    // Objekto pridėjimas prie konteksto
    context.Users.Add(newUser);

    // Pakeitimų išsaugojimas
    context.SaveChanges();
}

Šiame pavyzdyje context.SaveChanges() inicijuoja procesą. EF sugeneruoja SQL užklausą: INSERT INTO Users (Name) VALUES ('Ivan'); ir ją vykdo duomenų bazėje.

Atnaujinant objektą:

using (var context = new MyDbContext())
{
    // Objekto gavimas
    var userToUpdate = context.Users.Find(1);

    // Savybės keitimas
    userToUpdate.Name = "Petras";

    // Pakeitimų išsaugojimas
    context.SaveChanges();
}

Čia SaveChanges() sugeneruoja ir vykdo SQL užklausą: UPDATE Users SET Name = 'Petras' WHERE Id = 1;.

Ištrinti objektą:

using (var context = new MyDbContext())
{
    // Objekto gavimas
    var userToDelete = context.Users.Find(2);

    // Objekto ištrynimas iš konteksto
    context.Users.Remove(userToDelete);

    // Pakeitimų išsaugojimas
    context.SaveChanges();
}

SaveChanges() šiuo atveju sugeneruos ir įvykdys SQL užklausą: DELETE FROM Users WHERE Id = 2;.

Entity Framework Core taip pat palaiko paketinio išsaugojimo galimybę, kai keli INSERT, UPDATE, DELETE veiksmai sujungiami į vieną ar kelis paketus, siekiant efektyviau siųsti į duomenų bazę. Tai priklauso nuo duomenų bazės teikėjo ir jo galimybių.