Condividi tramite


Schema concettuale (CSDL)

Lo schema concettuale è un modello struttura per il modello a oggetti che verrà utilizzato dalle applicazioni compilate in base a Entity Data Model (EDM). Il nome dello spazio dei nomi dichiarato nello schema concettuale sarà il nome dello spazio dei nomi che qualifica le classi di entità e associazioni nel modello a oggetti generato.

L'architettura EDM fornisce la struttura di base delle entità e delle associazioni. I progettisti di applicazioni derivano le entità e le associazioni in base a questi tipi. I tipi definiti nello schema concettuale sono mappati ai metadati che descrivono il modello di archiviazione.

Nello schema concettuale viene utilizzato un dialetto XML denominato CSDL (Conceptual Schema Definition Language). Nei metadati di archiviazione viene utilizzato un dialetto XML denominato SSDL (Store Schema Definition Language).

NoteNota

Gli spazi dei nomi CSDL sono diversi dagli spazi dei nomi XML. Gli spazi dei nomi CSDL vengono utilizzati per qualificare in modo completo i nomi dei tipi di entità e delle associazioni. Quando, ad esempio, in MSL (Mapping Specification Language) viene fatto riferimento ai tipi di entità, deve essere fornito il nome completo. Quando vengono generate le classi, inoltre, vengono create in uno spazio dei nomi CLR con lo stesso nome. CSDL è incluso nello spazio dei nomi XML https://schemas.microsoft.com/ado/2006/04/edm. I due tipi di spazi dei nomi sono separati e distinti e non devono essere confusi.

Spazio dei nomi e mapping

L'elemento radice dello schema concettuale è l'elemento Schema. Questo elemento contiene un attributo Namespace che specifica lo spazio dei nomi CSDL. Lo spazio dei nomi è utilizzato nella specifica di mapping per connettere i tipi CSDL ai metadati di archiviazione.

La dichiarazione seguente dallo schema CSDL contiene lo spazio dei nomi utilizzato nella specifica di mapping per mappare le entità e le associazioni nell'applicazione di esempio AdventureWorksHRModel ai metadati di archiviazione.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm">

Nel file SSDL è presente una riga simile.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

I nomi degli spazi dei nomi utilizzati in queste dichiarazioni riflettono il relativo scopo nel modello di dati costruito. AdventureWorksHRModel è il modello concettuale mappato in questi esempi allo spazio dei nomi dei metadati di destinazione AdventureWorksHRTarget.

Gli elementi contenitore di entità nello schema concettuale e in quello di archiviazione sono indipendenti dall'elemento Schema anche se sono, in entrambi casi, elementi figlio degli elementi Schema.

Nella specifica di mapping l'elemento EntityContainerMapping esegue il mapping dei due oggetti contenitore senza riferimento ai relativi nomi degli spazi dei nomi: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources". L'utilizzo di un nome di contenitore di entità qualificato dal nome di spazio dei nomi dello schema provoca un'eccezione di mapping.

L'intestazione MSL (Mapping Specification Language) seguente illustra il mapping tra il contenitore di entità HumanResources nello schema concettuale, definito come CdmEntityContainer, e i metadati di archiviazione, definiti come StorageEntityContainer.

<?xml version="1.0" encoding="utf-8"?>
<Mapping edm:Space="C-S" 
        xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
  <EntityContainerMapping CdmEntityContainer="HumanResources"
                         StorageEntityContainer="HumanResources">

Altri elementi dello schema CSDL sono mappati in modo analogo alle specifiche SSDL nella specifica di mapping. Negli argomenti di questa sezione vengono descritti i tipi e gli elementi utilizzati per implementare un modello a oggetti compilato in base a EDM.

Contenuto della sezione

Elemento Schema (CSDL)

Attributo Namespace (CSDL)

Elemento EntityType (CSDL)

Elemento Association (CSDL)

Elemento EntityContainer (CSDL)

Vedere anche

Concetti

Implementazione di entità (EDM)
Implementazione delle associazioni (EDM)
Modello completo di AdventureWorks (EDM)

Altre risorse

Specifiche EDM