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
Utilizzare Copilot con Azure Cosmos DB
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Generare la software bill of material (SBOM) in GitHub
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Testare l'invio dei messaggi con Event Hubs Data Explorer
Scrivere selettori CSS più semplici ed efficienti con :is()
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Configurare lo startup di applicazioni server e client con .NET Aspire
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
La gestione della riconnessione al server di Blazor in .NET 9
Usare il colore CSS per migliorare lo stile della pagina