Middle
Wat is change tracking?
sobes.tech AI
Antwoord van AI
Wijzigingsvolging is een mechanisme in ORM (Object-Relational Mapper), zoals Entity Framework, dat de status van entiteiten (objecten) die in de gegevenscontext zijn geladen, bijhoudt. Het bepaalt welke entiteiten zijn toegevoegd, gewijzigd of verwijderd, zodat bij het opslaan van de wijzigingen in de database de juiste INSERT, UPDATE of DELETE commando's worden uitgevoerd.
Statussen van entiteiten:
- Added: Object net gemaakt en toegevoegd aan de context, maar nog niet opgeslagen in de database.
- Unchanged: Object geladen uit de database of opgeslagen, zonder wijzigingen.
- Modified: Eén of meer eigenschappen van het object zijn gewijzigd na het laden of opslaan.
- Deleted: Object gemarkeerd voor verwijdering uit de database.
- Detached: Object wordt niet gevolgd door de gegevenscontext.
// Voorbeeld van wijzigingsvolging in Entity Framework Core
using (var context = new MyDbContext())
{
// Laad entiteit
var myEntity = context.MyEntities.Find(1);
// Controleer de initiële staat
Console.WriteLine($"Initiële staat: {context.Entry(myEntity).State}"); // Toont Unchanged
// Wijzig eigenschap
myEntity.MyProperty = "Nieuwe Waarde";
// Controleer de staat na wijziging
Console.WriteLine($"Staat na wijziging: {context.Entry(myEntity).State}"); // Toont Modified
// Voeg een nieuwe entiteit toe
var newEntity = new MyEntity { MyProperty = "Nog een Nieuwe" };
context.MyEntities.Add(newEntity);
// Controleer de staat van de nieuwe entiteit
Console.WriteLine($"Staat van de nieuwe entiteit: {context.Entry(newEntity).State}"); // Toont Added
// Markeer de entiteit voor verwijdering
context.MyEntities.Remove(myEntity);
// Controleer de staat na verwijdering
Console.WriteLine($"Staat na verwijdering: {context.Entry(myEntity).State}"); // Toont Deleted
// Sla de wijzigingen op in de database
context.SaveChanges();
}