Sobes.tech
Middle

Kuidas laadib Entity Framework andmeid andmebaasi?

sobes.tech AI

Vastus AI-lt

Entity Framework laadib entiteedid andmebaasi, koostades SQL-päringuid andmete sisestamiseks, uuendamiseks või kustutamiseks, tuginedes muudatustele, mida jälgitakse andmekontekstis, ning seejärel täites need.

Protsess hõlmab:

  1. Muudatuste jälgimine: DbContext jälgib iga entiteedi seisundit (Lisatud, Muudetud, Kustutatud, Muutumatud).
  2. Käskude genereerimine: Muudatuste jälgimise põhjal genereerib Entity Framework vastavad SQL-käsud (INSERT, UPDATE, DELETE).
  3. Käskude täitmine: Genereeritud käsud saadetakse andmebaasi ja täidetakse.

Näide lisatud entiteedi salvestamisest:

// Andmekonteksti loomine
using (var context = new MyDbContext())
{
    // Uue entiteedi loomine
    var newUser = new User { Name = "Ivan" };

    // Entiteedi lisamine konteksti
    context.Users.Add(newUser);

    // Muudatuste salvestamine andmebaasi
    context.SaveChanges();
}

Selles näites algatab context.SaveChanges() protsessi. EF genereerib SQL-päringu: INSERT INTO Users (Name) VALUES ('Ivan'); ja täidab selle andmebaasis.

Entiteedi uuendamisel:

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

    // Omaduse muutmine
    userToUpdate.Name = "Petr";

    // Muudatuste salvestamine
    context.SaveChanges();
}

Siin genereerib SaveChanges() SQL-päringu: UPDATE Users SET Name = 'Petr' WHERE Id = 1;.

Entiteedi kustutamisel:

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

    // Entiteedi eemaldamine kontekstist
    context.Users.Remove(userToDelete);

    // Muudatuste salvestamine
    context.SaveChanges();
}

SaveChanges() genereerib ja täidab SQL-päringu: DELETE FROM Users WHERE Id = 2;.

Entity Framework Core toetab ka partii salvestamise võimalust, kus mitu INSERT, UPDATE, DELETE operatsiooni ühendatakse üheks või mitmeks paketiks, et neid andmebaasi tõhusamalt saata. See sõltub andmebaasi pakkujast ja selle võimalustest.