Jak načítá Entity Framework entity do databáze?
sobes.tech AI
Odpověď od AI
Entity Framework načítá entity v databázi vytvářením SQL dotazů pro vložení, aktualizaci nebo odstranění dat na základě změn sledovaných v datovém kontextu, a jejich následným provedením.
Proces zahrnuje:
- Sledování změn: DbContext sleduje stav každé entity (Added, Modified, Deleted, Unchanged).
- Generování příkazů: Na základě sledovaných změn Entity Framework generuje odpovídající SQL příkazy (INSERT, UPDATE, DELETE).
- Provádění příkazů: Generované příkazy jsou odeslány do databáze a vykonány.
Příklad uložení přidané entity:
// Vytvoření datového kontextu
using (var context = new MyDbContext())
{
// Vytvoření nové entity
var newUser = new User { Name = "Иван" };
// Přidání entity do kontextu
context.Users.Add(newUser);
// Uložení změn do databáze
context.SaveChanges();
}
V tomto příkladu context.SaveChanges() spustí proces ukládání. EF vygeneruje SQL dotaz typu INSERT INTO Users (Name) VALUES ('Иван'); a provede jej v databázi.
Při aktualizaci entity:
using (var context = new MyDbContext())
{
// Získání entity
var userToUpdate = context.Users.Find(1);
// Změna vlastnosti
userToUpdate.Name = "Петр";
// Uložení změn
context.SaveChanges();
}
Zde SaveChanges() spustí generování a provedení SQL dotazu UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
Při odstranění entity:
using (var context = new MyDbContext())
{
// Získání entity
var userToDelete = context.Users.Find(2);
// Odstranění entity z kontextu
context.Users.Remove(userToDelete);
// Uložení změn
context.SaveChanges();
}
SaveChanges() v tomto případě vygeneruje a provede SQL dotaz DELETE FROM Users WHERE Id = 2;.
Entity Framework Core také podporuje dávkové ukládání (batch saving), kdy jsou více operací INSERT, UPDATE, DELETE sloučeny do jednoho nebo více balíčků pro efektivnější přenos do databáze. To závisí na poskytovateli databáze a jeho schopnostech.