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
Aggiungere interattività lato server in Blazor 8
Creare alias per tipi generici e tuple in C#
Usare le collection expression per inizializzare una lista di oggetti in C#
Controllare gli accessi IP alle app con Azure Container Apps
Generare file PDF da Blazor WebAssembly con iText
.NET Conference Italia 2023
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Creare moduli CSS in React
Evitare la command injection in un workflow di GitHub
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)