Jak Entity Framework ładuje encje do bazy danych?
sobes.tech AI
Odpowiedź od AI
Entity Framework ładuje encje do bazy danych, tworząc zapytania SQL do wstawiania, aktualizacji lub usuwania danych na podstawie zmian śledzonych w kontekście danych, a następnie je wykonując.
Proces obejmuje:
- Śledzenie zmian: DbContext śledzi stan każdej encji (Added, Modified, Deleted, Unchanged).
- Generowanie poleceń: Na podstawie śledzonych zmian Entity Framework generuje odpowiednie polecenia SQL (INSERT, UPDATE, DELETE).
- Wykonanie poleceń: Wygenerowane polecenia są wysyłane do bazy danych i wykonywane.
Przykład zapisywania dodanej encji:
// Tworzenie kontekstu danych
using (var context = new MyDbContext())
{
// Tworzenie nowej encji
var newUser = new User { Name = "Иван" };
// Dodanie encji do kontekstu
context.Users.Add(newUser);
// Zapisanie zmian w bazie danych
context.SaveChanges();
}
W tym przykładzie context.SaveChanges() inicjuje proces zapisu. EF generuje zapytanie SQL typu INSERT INTO Users (Name) VALUES ('Иван'); i wykonuje je w bazie danych.
Przy aktualizacji encji:
using (var context = new MyDbContext())
{
// Pobranie encji
var userToUpdate = context.Users.Find(1);
// Zmiana właściwości
userToUpdate.Name = "Петр";
// Zapisanie zmian
context.SaveChanges();
}
Tutaj SaveChanges() inicjuje generowanie i wykonanie zapytania SQL UPDATE Users SET Name = 'Петр' WHERE Id = 1;.
Przy usuwaniu encji:
using (var context = new MyDbContext())
{
// Pobranie encji
var userToDelete = context.Users.Find(2);
// Usunięcie encji z kontekstu
context.Users.Remove(userToDelete);
// Zapisanie zmian
context.SaveChanges();
}
SaveChanges() w tym przypadku wygeneruje i wykona zapytanie SQL DELETE FROM Users WHERE Id = 2;.
Entity Framework Core obsługuje również możliwość zapisywania wsadowego (batch saving), gdy wiele operacji INSERT, UPDATE, DELETE jest łączonych w jeden lub kilka pakietów dla bardziej efektywnego przesyłania do bazy danych. To zależy od dostawcy bazy danych i jego możliwości.