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
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Migliorare la sicurezza dei prompt con Azure AI Studio
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Creare una libreria CSS universale: i bottoni
Ottenere un token di accesso per una GitHub App
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core