Nello script #345 abbiamo visto come creare una convenzione custom da utilizzare in Code First con Entity Framework 6. In quello script abbiamo sfruttato il metodo OnModelCreating della classe DbContext. Se da un lato questa tecnica ci permette di aggiungere facilmente una convenzione a un contesto, dall'altro ci impedisce di riusarla su più contesti a meno che non si duplica il codice su ogni contesto.
Entity Framework 6 permette di creare classi all'interno delle quali possiamo definire convenzioni; se mettiamo queste classi in un assembly, poi possiamo usarle in più progetti riutilizzando quindi il codice invece che usando il copia e incolla.
Per creare una classe che contiene una convenzione custom, dobbiamo creare una classe che eredita da Convention e, nel suo costruttore, inserire il codice per la convenzione custom così come mostrato nel seguente snippet.
public class KeyConvention : Convention { public KeyConvention() { var prop = Properties().Where(p => p.Name.Equals("Chiave", StringComparison.OrdinalIgnoreCase)); prop.Configure(p => p.IsKey()); } }
Il metodo Properties ritorna i metadati di tutte le proprietà e noi filtriamo col metodo Where di LINQ le proprietà che si chiamano Chiave. Successivamente le impostiamo come chiave con il metodo Configure e IsKey esattamente come se ci trovassimo nel metodo OnModelCreating del DbContext.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Effettuare il binding di date in Blazor
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Controllare gli accessi IP alle app con Azure Container Apps
Eseguire una query su SQL Azure tramite un workflow di GitHub
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
.NET Conference Italia 2023
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Code scanning e advanced security con Azure DevOps
Usare il versioning con i controller di ASP.NET Core Web API