Jak wydajnie zaktualizować rekord w bazie danych za pomocą Entity Framework
W programowaniu ważna jest nie tylko skuteczność, ale również wydajność. Pokazujemy jak w łatwy sposób zoptymalizować rekord w bazie danych. Pokazujemy przykład aktualizacji statusu zamówienia.
Podejście sprzed EF Core 7
Do wersji 7 Entity Framework można było aktualizować rekord w bazie danych zasadniczo na 2 sposoby:
- Przez pobranie obiektu, przypisanie nowej wartości i zapisanie obiektu
var order = await _context.Orders.FindAsync(orderId); order.Status = newStatus; _context.Orders.Update(order); await _context SaveChangesAsync();
- Drugi sposób to wykonanie zapytania SQL
string sql = "UPDATE Orders SET Status = @p0 WHERE Id = @p1"; _context.Database.ExecuteSqlRaw(sql, newStatus, orderId);
Pierwszy sposób nie jest zbyt wydajny, drugi natomiast przy źle zapisanym zapytaniu SQL, zwłaszcza przez początkujących programistów może narazić aplikację na atak SQL Injection. Na szczęście od EF Core 7 mamy sposób, który jest wydajny i bezpieczny:
Podejście wydajne i bezpieczne
await _context.Orders.Where(o => o.Id.Equals(orderId)) .ExecuteUpdateAsync(s => s.SetProperty(o => o.Status, o => newSatus));
Kontakt z nami
Masz pomysły, uwagi lub pytania?
Liczba wyświetleń: 2
