Nello script #634 abbiamo visto come sia semplice mappare una lista di tipi semplici verso una colonna del database usando JSON come formato di serializzazione. Quando viene generato il database tramite una migration, Entity Framework assume un atteggiamento protettivo e quindi crea la colonna come un nvarchar(max) non potendo sapere a priori le dimensioni delle stringhe JSON che verranno memorizzate nella colonna e il tipo di caratteri. Tuttavia, le colonne a lunghezza massima indefinita non sono ottimizzate dai database. Se sappiamo quale puo essere la lunghezza massima memorizzata, possiamo anche impostare la lunghezza massima della colonna della tabella ottimizzando così anche il database. Per fare questo possiamo utilizzare le primitive esistenti da tempo in Entity Framework come quella mostrata in questo script.
modelBuilder .Entity<Person>() .Property(e => e.Nicknames) .HasMaxLength(100) .IsUnicode(false);
In questo script, abbiamo supposto che una persona italiana non abbia più 2-3 soprannomi senza caratteri strani e quindi abbiamo impostato la lunghezza a 100 e il formato a non unicode risparmiando molto spazio.
Nei casi in cui vogliamo comunque impostare una lunghezza di default per tutti i campi di un certo tipo, possiamo ricorrere alle convenzioni.
protected override void ConfigureConventions(ModelConfigurationBuilder builder) { builder .Properties<List<string>>() .AreUnicode(false) .HaveMaxLength(2000); }
In questo script, abbiamo creato una convenzione che indica che tutti i campi di tipo List
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Gestire i dati con Azure Cosmos DB Data Explorer
Gestire liste di tipi semplici con Entity Framework Core
Estrarre dati randomici da una lista di oggetti in C#
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Le novità di Entity Framework 8
Effettuare il refresh dei dati di una QuickGrid di Blazor
Gestire undefined e partial nelle reactive forms di Angular
Ordine e importanza per @layer in CSS
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Gestione dei nomi con le regole @layer in CSS
I più letti di oggi
- Centrare elementi in HTML tramite CSS
- Proteggere le risorse Azure con private link e private endpoints
- Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
- Referenziare un @layer più alto in CSS
- Gestire i dati con Azure Cosmos DB Data Explorer
- Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API