Sobes.tech
Middle

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:

  1. Praćenje promena: DbContext prati stanje svake entitete (Added, Modified, Deleted, Unchanged).
  2. Generisanje komandi: Na osnovu praćenih promena, Entity Framework generiše odgovarajuće SQL komande (INSERT, UPDATE, DELETE).
  3. 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.