I Dynamic Data Control sono uno strumento del .NET Framework 3.5 SP 1 che facilitano la creazione delle tipiche interfacce per la consultazione, la modifica, l'inserimento e la cancellazione di dati. Il sistema si basa su un modello ad oggetti, classe MetaModel, che rappresenta le tabelle, le colonne, le relazioni e tutte le informazioni inerenti alla validazione, alle descrizioni, ecc.
Con Visual Studio 2008 è facile creare un nuovo progetto attraverso la voce "Dynamic Data Entities Web Application", che prepara un'applicazione web con tutti i requisiti necessari:
- la directory DynamicData contenente tutti i template predefiniti per ogni tipologia di campo;
- le pagine ASP.NET per le rispettive viste, opportunamente create inserendo il controllo EntityDataSource per effettuare il binding con le DetailsView e GridView.
La classe MetaModel dispone del metodo RegisterContext per registrare un DataContext di LINQ to SQL o un ObjectContext di ADO.NET Entity Framework. Nel global.asax non resta che inserire nel metodo RegisterRoutes la registrazione del contesto da utilizzare:
model.RegisterContext(typeof(NorthwindModel.NorthwindEntities), new ContextConfiguration() { ScaffoldAllTables = true });
In questo modo sono prese in analisi tutte le entità contenute nell'ObjectContext attraverso un DataModelProvider specifico per ADO.NET Entity Framework. Tutte le colonne diventano ordinabili, ad eccezione degli array di byte, e gli attributi posti su ogni proprietà sono analizzati per determinare la descrizione, il nome, il valore predefinito, le tipologie di validazione e la formattazione. Per aggiungere queste informazioni si può sfruttare l'attributo MetadataType, per marcare ogni entità indicando quale classe usare per leggere per ogni proprietà quali attributi ci sono, senza toccare le classi auto generate dal designer edmx.
[MetadataType(typeof(CustomersMetadata))] public partial class Customers {} public class CustomersMetadata { [DisplayName("Indirizzo")] [RegularExpression(@"\w+.+")] public string Address { get; set; } }
L'uso della parola chiave partial permette di aggiungere l'attributo all'altra classe partial generata dal designer, mentre le proprietà o i campi della classe CustomerMetadata non devono avere nessuna implementazione perché questo oggetto non viene utilizzato direttamente, ma solo usato come informazione dei metadati.
Per approfondimenti sui Dynamic Data Control si veda:
Routing e dynamic data control di ASP.NET 3.5 SP1
https://www.aspitalia.com/articoli/asp.net3.5/routing-dynamic-data.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare QuickGrid di Blazor con Entity Framework
Change tracking e composition in Entity Framework
Filtering sulle colonne in una QuickGrid di Blazor
Le novità di Entity Framework 8
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Effettuare il binding di date in Blazor
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Generare velocemente pagine CRUD in Blazor con QuickGrid
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Usare le navigation property in QuickGrid di Blazor
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core