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
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Usare le navigation property in QuickGrid di Blazor
Generare velocemente pagine CRUD in Blazor con QuickGrid
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Change tracking e composition in Entity Framework
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Effettuare il binding di date in Blazor
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online