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
An introduction to the strange APIs of IndexedDB
Monitorare lo stato di salute di un Azure App Service
Abilitare la scrittura multi-pointer con InkCanvas nella Universal Windows Platform
Creare layout consistenti grazie al Visual Material in Xamarin Forms
Paginare un elenco con Blazor Server
Utilizzare i Workspace con NPM 7
Avviare una registrazione audio e video in una applicazione della Universal Windows Platform
Realizzare un oggetto DataList generico in Blazor
UI testing in applicazioni .NET desktop e mobile
Point-in-time restore con gli Azure Storage Blob
Eseguire più query in un solo comando usando la libreria Entity Framework Plus
C# <3 web: Blazor WebAssembly