Kako Entity Framework učitava entitete u bazu podataka?
sobes.tech АИ
Одговор од АИ
Entity Framework učitava entitete u bazu podataka formiranjem SQL upita za umetanje, ažuriranje ili brisanje podataka na osnovu promena koje prate u kontekstu podataka, i zatim ih izvršava.
Proces uključuje:
- Praćenje promena: DbContext prati stanje svake entitete (Added, Modified, Deleted, Unchanged).
- Generisanje komandi: Na osnovu praćenih promena, Entity Framework generiše odgovarajuće SQL komande (INSERT, UPDATE, DELETE).
- Izvršavanje komandi: Generisane komande se šalju u bazu podataka i izvršavaju.
Primer čuvanja dodatne entitete:
// Kreiranje konteksta podataka
using (var context = new MyDbContext())
{
// Kreiranje nove entitete
var newUser = new User { Name = "Иван" };
// Dodavanje entiteta u kontekst
context.Users.Add(newUser);
// Čuvanje promena u bazi
context.SaveChanges();
}
U ovom primeru, context.SaveChanges() pokreće proces čuvanja. EF generiše SQL upit tipa INSERT INTO Users (Name) VALUES ('Иван'); i izvršava ga u bazi.
Prilikom ažuriranja entiteta:
using (var context = new MyDbContext())
{
// Dobijanje entiteta
var userToUpdate = context.Users.Find(1);
// Izmena svojstva
userToUpdate.Name = "Петр";
// Čuvanje promena
context.SaveChanges();
}
Ovde, SaveChanges() pokreće generisanje i izvršenje SQL upita UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
Prilikom brisanja entiteta:
using (var context = new MyDbContext())
{
// Dobijanje entiteta
var userToDelete = context.Users.Find(2);
// Uklanjanje entiteta iz konteksta
context.Users.Remove(userToDelete);
// Čuvanje promena
context.SaveChanges();
}
SaveChanges() u ovom slučaju generiše i izvršava SQL upit DELETE FROM Users WHERE Id = 2;.
Entity Framework Core takođe podržava paketno čuvanje (batch saving), gde se više operacija INSERT, UPDATE, DELETE kombinuju u jedan ili više paketa za efikasnije slanje u bazu podataka. To zavisi od pružaoca baze podataka i njegovih mogućnosti.