Entity Framework e altre piattaforme

La maggior parte delle applicazioni utilizza database relazionali in modo esteso. Gli sviluppatori necessitano di un modello di dati per la connessione del codice dell'applicazione alle strutture di archiviazione.

Entity Data Model (EDM) supporta scenari di applicazioni in diversi modelli di archiviazione e il mapping sia a CLR sia a sistemi di gestione di database, ad esempio SQL Server. Il mapping a CLR è necessario ai fini della programmazione, mentre il mapping a database relazionali è necessario per motivi di persistenza. Con l'introduzione di EDM, ADO.NET offre una piattaforma completa per il mapping di tipi programmabili ad archivi.

Vi sono almeno quattro piattaforme esistenti con cui è possibile utilizzare un nuovo modello di dati:

  • SQL Server

  • Common Language Runtime (CLR)

  • Unified Modeling Language (UML)

  • XML Schema Definition (XSD)

Nessuna delle piattaforme esistenti soddisfa tutti i requisiti delle applicazioni dati.

  • SQL Server non consente una semplice integrazione con i linguaggi di programmazione. Le query basate su testo contengono spesso codice complesso. Le tabelle di database modellano relazioni utilizzando chiavi esterne. SQL non è in grado di modellare contenuto di tipo strict.

  • CLR non dispone dei vincoli necessari per modellare relazioni.

  • UML è troppo astratto e non è in grado di implementare tipi di dati o persistenza.

  • La specifica XSD è troppo diversa dalle classi e dagli schemi di database del linguaggio di programmazione per garantire un formato neutro per il mapping sia a CLR sia ai modelli di database relazionali.

Mapping EDM a CLR e sistemi di gestione di database

EDM supporta il mapping sia a CLR sia a database relazionali. CLR consente agli sviluppatori di utilizzare dati in formati di codifica noti. I tipi di dati nel codice vengono mappati a database relazionali, lo standard riconosciuto per la persistenza dei dati.

Per implementare mapping tra schemi, linguaggi di programmazione e tabelle di database, EDM utilizza un meccanismo di visualizzazione indipendente dall'archivio che trae vantaggio dalla progettazione dei sistemi di gestione di database relazionali. Benché le applicazioni convenzionali utilizzino già viste di database per la visualizzazione dei dati e gli aggiornamenti, la costruzione di viste richiede spesso una sintassi SQL complessa che comporta join di tabella e proiezioni. Il mapping EDM tra schemi e archivi consente di connettere gli oggetti nel codice al database tramite un provider di dati ADO.NET.

I servizi di dati EDM non dipendono da alcuno schema di archiviazione specifico. Le applicazioni che richiedono più origini dati possono gestire singoli mapping per ogni origine dati.

Piattaforma di sviluppo

EDM supporta la progettazione di applicazioni in ogni fase dell'implementazione. EDM supporta molti utili costrutti esistenti e la relativa progettazione utilizza concetti dedotti da sistemi di modellazione dati ben definiti, ad esempio il modello di database relazionale, il modello entità-relazione e CLR (Common Language Runtime).

EDM esegue la modellazione di funzionalità di applicazione complesse e acquisisce in modo dichiarativo relazioni semantiche tra oggetti programmabili e archiviazione del database.

EDM include le funzionalità del modello di database relazionale e lo estende aggiungendo identità, riferimenti e relazioni a livello di entità con tipizzazione forte.

Poiché la specifica EDM è estesa, è possibile utilizzare un sottoinsieme di tale specifica. Un'applicazione o un framework, ad esempio, può utilizzare entità, associazioni e riferimenti e non l'ereditarietà.

EDM è estensibile secondo due principi:

  • Nuovi tipi ed estensioni di tipi esistenti possono essere definiti tramite l'ereditarietà. Le applicazioni possono definire relazioni tra tipi e attraverso i limiti dello schema.

  • Le estensioni di dati esistenti basate su EDM non influiscono sulle funzionalità che non utilizzano le estensioni.

La condivisione tra applicazioni e tra framework può essere eseguita definendo modelli di dati applicazioni in termini di EDM. Lo spazio dei nomi definito per un'applicazione può essere utilizzato da un'altra applicazione compilata in base a EDM.

Il modello di query è progettato per essere chiuso in base all'algebra relazionale. Ciò significa che l'applicazione di operatori relazionali a concetti EDM restituisce risultati anch'essi inclusi in EDM.

L'integrazione di EDM con CLR consente di acquisire semantica dei dati versatile. Il sistema di tipi EDM esegue il mapping delle dichiarazioni nei linguaggi di programmazione ai dati nelle strutture di archiviazione sottostanti.

Le entità di EDM sono logicamente indipendenti dall'implementazione della persistenza utilizzata. Il modello di dati non impone implementazioni o mapping specifici e le entità possono essere mappate a un'ampia gamma di origini dati fisiche. EDM non è progettato per sostituire il linguaggio DDL (Data Definition Language) di SQL Server.

Fasi di progettazione

La progettazione e l'implementazione di un modello di dati tramite la specifica EDM comportano tre fasi preliminari di sviluppo. Di seguito viene descritta in modo dettagliato ciascuna fase del processo.

  • Le entità e le relazioni nel dominio dell'applicazione vengono specificate in un file XML.

  • I metadati che descrivono le strutture del database in cui verranno archiviati i dati per l'applicazione vengono specificati in un secondo file XML.

  • Viene eseguito il mapping delle entità e le relazioni nel primo schema alle strutture di database corrispondenti nel file di metadati.

Il primo schema rappresenta una fase concettuale di sviluppo in cui vengono definite entità e relazioni utilizzando una sintassi XML denominata CSDL (Conceptual Schema Definition Language). I file di questo tipo hanno estensione csdl. Per ulteriori informazioni sulla sintassi CSDL, vedere Schemi (EDM).

Lo schema dei metadati di archiviazione utilizza SSDL (Store Schema Definition Language).

Il mapping di schemi concettuali a metadati di archiviazione utilizza una terza sintassi XLM denominata MSL (Mapping Specification Language). Per informazioni sul mapping di entità e relazioni e sui tipi di schemi EDM, vedere Specifica di schemi e mapping (Entity Framework).

Lo schema CSDL viene utilizzato per generare il modello a oggetti programmabile in uso dal codice dell'applicazione. I linguaggi che supportano Common Language Runtime (CLR) possono utilizzare il modello a oggetti creato dal processo di compilazione. Per alcuni esempi di codice dell'applicazione, vedere Applicazioni di esempio (Entity Framework).

Vedere anche

Concetti

Implementazione di entità (EDM)
Implementazione delle associazioni (EDM)

Altre risorse

Specifiche EDM
Applicazioni di esempio (Entity Framework)