Sobes.tech
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();
}