Una delle richieste più frequenti quando si realizza una pagina che gestisce un'entità è quella di sapere l'utente che ha creato l'entità e la data di creazione oltre all'utente e la data di ultima modifica. Se adottiamo le temporal table di SQL Server, queste informazioni possono essere recuperate molto velocemente.
Per quanto riguarda la data di creazione ci basta prendere la data di scrittura del primo record ordinando per data crescente e per la data di ultima modifica applichiamo lo stesso criterio ma ordinando per data decrescente. Per quanto riguarda l'utente, il ragionamento è il medesimo con l'accortezza di avere una colonna con il nome dell'utente nella tabella e di valorizzare l'utente che effettua l'azione ogni volta che andiamo ad aggiornare o inserire il record.
Grazie al supporto alle temporal tables di Entity Framework Core, possiamo recuperare facilmente con LINQ questi dati usando l'oepratore TemporalAll come possiamo vedere nel prossimo esempio.
var creationData = Context.People .TemporalAll() .Where(c => c.Id = 10) .OrderBy(c => EF.Property<DateTime>(c, "SysStartTime")) .Select(c => new { c.Username, CreationDate = EF.Property<DateTime>(c, "SysStartTime") }) .First(); var lastUpdateData = Context.People .TemporalAll() .Where(c => c.Id = 10) .OrderByDescending(c => EF.Property<DateTime>(c, "SysStartTime")) .Select(c => new { c.Username, CreationDate = EF.Property<DateTime>(c, "SysStartTime") }) .First();
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Miglioramenti nell'accessibilità con Angular CDK
Ottimizzazione dei block template in Angular 17
Migrare una service connection a workload identity federation in Azure DevOps
Implementare l'infinite scroll con QuickGrid in Blazor Server
Code scanning e advanced security con Azure DevOps
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Generare token per autenicarsi sulle API di GitHub
Aggiungere interattività lato server in Blazor 8
Assegnare un valore di default a un parametro di una lambda in C#
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Disabilitare automaticamente un workflow di GitHub (parte 2)
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)