Utilizzare i filtri a livello di modello in Entity Framework Core 2 per semplificare le cancellazioni logiche

di Stefano Mostarda, in LINQ, Entity Framework,

In alcune applicazioni cancellare fisicamente i dati non è possibile. In questo genere di applicazioni invece di usare la cancellazione fisica dei record, si usa quella logica cioè si marcano i record cancellati con un flag. Quando si estraggono i dati, bisogna far attenzione a non recuperare i record cancellati quindi bisogna impostare una condizione di ricerca.
Poiché questa condizione va applicata a tutte le query, è molto facile commettere errori. In questi casi torna utile una nuova funzionalità di Entity Framework Core 2.0: i filtri a livello di modello. Tramite questa funzionalità possiamo impostare un filtro su una entity a livello di mapping e Entity Framework Core 2 applicherà sempre questo filtro senza che dobbiammo specificarlo nella query.

modelBuilder.Entity<Person>()
    .HasQueryFilter(p => !p.Deleted);

In questo modo, ogni volta che eseguiamo una query che coinvolge l'entity Person, Entity Framework Core aggiungera una Where SQL che include solo i record che hanno il flag deleted a false.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi