ASP.NET ed Entity Framework: Dynamic Data Control

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi