Quindi, ecco la mia situazione:Entity Framework, soft-cancellazione e query
Sono soft-eliminazione di alcune righe in una tabella, utilizzando una bandiera IsDeleted
, in modo che una può mantenere una traccia dei miei dati archiviati. Lo faccio sovrascrivendo l'istruzione SaveChanges
nel mio ObjectContext
.
La domanda è: come posso selezionare solo la riga (s) che hanno IsDeleted == false
, senza dover specificare && !IsDeleted
in ogni query?
Esiste un modo per specificarlo direttamente nel mio contesto?
tkx!
EF Codice-primo o Model-First? – StriplingWarrior
Invece di Flag, usa una tabella. Per la tabella eliminata, il PK può essere lo stesso PK della tabella principale, con il PK a FK della tabella eliminata nella tabella principale. Se hai un record in cancellato, allora è cancellato, se non attivo. Quindi è solo un semplice join. Le prestazioni delle query saranno migliori rispetto all'utilizzo di un bit flag. –
@JonRaynor: I database non sono la mia specialità, ma mi sembra che controllare un bit flag sia molto meno costoso di un join, soprattutto perché di solito ti interesserà sapere quali articoli * non sono * cancellati (e quindi non sono presenti nella tabella eliminata). Se il flag di bit danneggia le prestazioni delle query, preferirei un indice sulla creazione di una tabella completamente separata. – StriplingWarrior