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:
- Pakeitimų stebėjimas: DbContext stebi kiekvieno objekto būseną (Pridėta, Pakeista, Ištrinta, Nepakitusi).
- Komandų generavimas: Remiantis stebimais pakeitimais Entity Framework generuoja atitinkamas SQL komandas (INSERT, UPDATE, DELETE).
- 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ų.