Cum încarcă Entity Framework entitățile în baza de date?
sobes.tech AI
Răspuns de la AI
Entity Framework încarcă entități în baza de date formând interogări SQL de inserare, actualizare sau ștergere a datelor pe baza modificărilor urmărite în contextul datelor, și apoi le execută.
Procesul include:
- Urmărirea modificărilor: DbContext urmărește starea fiecărei entități (Added, Modified, Deleted, Unchanged).
- Generarea comenzilor: Pe baza modificărilor urmărite, Entity Framework generează comenzile SQL corespunzătoare (INSERT, UPDATE, DELETE).
- Executarea comenzilor: Comenzile generate sunt trimise către baza de date și executate.
Exemplu de salvare a unei entități adăugate:
// Crearea contextului de date
using (var context = new MyDbContext())
{
// Crearea unei noi entități
var newUser = new User { Name = "Иван" };
// Adăugarea entității în context
context.Users.Add(newUser);
// Salvarea modificărilor în bază
context.SaveChanges();
}
În acest exemplu, context.SaveChanges() inițiază procesul de salvare. EF generează interogarea SQL de tip INSERT INTO Users (Name) VALUES ('Иван'); și o execută în baza de date.
La actualizarea unei entități:
using (var context = new MyDbContext())
{
// Obținerea entității
var userToUpdate = context.Users.Find(1);
// Modificarea proprietății
userToUpdate.Name = "Петр";
// Salvarea modificărilor
context.SaveChanges();
}
Aici, SaveChanges() inițiază generarea și executarea interogării SQL UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
La ștergerea unei entități:
using (var context = new MyDbContext())
{
// Obținerea entității
var userToDelete = context.Users.Find(2);
// Eliminarea entității din context
context.Users.Remove(userToDelete);
// Salvarea modificărilor
context.SaveChanges();
}
SaveChanges() în acest caz va genera și executa interogarea SQL DELETE FROM Users WHERE Id = 2;.
Entity Framework Core suportă, de asemenea, salvarea în loturi (batch saving), când mai multe operații de INSERT, UPDATE, DELETE sunt combinate într-un sau mai multe pachete pentru o transmitere mai eficientă către baza de date. Acest lucru depinde de provider-ul bazei de date și de capabilitățile sale.