Middle
Czym jest śledzenie w Entity Framework?
sobes.tech AI
Odpowiedź od AI
Śledzenie (Entity Tracking) to mechanizm w Entity Framework Core, który monitoruje zmiany w obiektach encji załadowanych z bazy danych. Kontekst przechowuje informacje o stanie każdej załadowanej encji i może generować zapytania SQL do aktualizacji bazy danych podczas zapisywania zmian (DbContext.SaveChanges()).
Główne stany encji:
- Added: Encja została dodana do kontekstu, ale jeszcze nie istnieje w bazie danych.
- Unchanged: Encja została załadowana z bazy danych i jej właściwości nie zostały zmienione.
- Modified: Niektóre właściwości encji zostały zmienione od momentu jej załadowania z bazy danych.
- Deleted: Encja została oznaczona do usunięcia z bazy danych.
- Detached: Encja nie jest śledzona przez kontekst.
Domyślnie encje są śledzone podczas pracy z zapytaniami LINQ. Pozwala to Entity Framework automatycznie określić, które zmiany należy zapisać.
Przykład jawnego wskazania śledzenia:
// Śledzone zapytanie
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);
// Nieśledzone zapytanie
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);
Wyłączenie śledzenia za pomocą AsNoTracking() może poprawić wydajność podczas wykonywania zapytań, jeśli nie trzeba zapisywać zmian w bazie danych, ponieważ EF nie zużywa zasobów na śledzenie stanu encji.