Entity Framework supporta la validazione degli oggetti prima che questi vengano persistiti. Per specificare le regole di validazione, dobbiamo utilizzare le data annotations del .NET Framework come Required, MaxLength e così via.
Tuttavia, ci sono casi in cui la validazione non può essere specificata con una data annotation in quanto il codice di validazione è complesso. Nei casi in cui le data annotation non sono sufficienti, possiamo utilizzare l'interfaccia IValidatableObject.
Quest'interfaccia espone il metodo Validate all'interno del quale specifichiamo la validazione e ritorniamo una lista di oggetti ValidationResult che rappresentano gli eventuali errori. Se la lista è vuota, la validazione passa, altrimenti Entity Framework blocca la persistenza.
public class Person : IValidatableObject { public int Id { get; set; } [Required] public string Name { get; set; } public int Age { get; set; } public IEnumerable<ValidationResult> Validate( ValidationContext validationContext) { if (Age < 18) { yield return new ValidationResult("Utente non magiorenne"); } } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Referenziare un @layer più alto in CSS
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Disabilitare automaticamente un workflow di GitHub (parte 2)
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Aggiungere interattività lato server in Blazor 8
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Eseguire una query su SQL Azure tramite un workflow di GitHub
I più letti di oggi
- Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
- Introduzione a #azure Container Apps https://aspit.co/b92 di @CristianCivera #containers
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!