Condividi tramite


Attributo Namespace (CSDL)

Il nome dello spazio dei nomi dichiarato in CSDL (Conceptual Schema Definition Language) ha diverse funzioni in Entity Data Model (EDM). Per consentire al processo di compilazione di connettere le classi programmabili alle strutture di archiviazione che rendono persistenti i dati per le applicazioni, i tipi e i contenitori nello schema CSDL devono essere mappati ai metadati di archiviazione. MSL (Mapping Specification Language) consente la connessione dei tipi concettuali alle definizioni in SSDL (Store Schema Definition Language) che descrivono il modello di archiviazione.

Dopo la compilazione del modello a oggetti dal file CSDL, lo spazio dei nomi specificato nel file CSDL viene utilizzato dal codice dell'applicazione per fare riferimento alle classi nella DLL creata dal processo di compilazione. La direttiva using identifica le classi nello spazio dei nomi AdventureWorksHRModel.

using AdventureWorksHRModel;

Lo spazio dei nomi dichiarato nello schema CSDL identifica inoltre questo modello a oggetti nel file exe.config richiesto dalle applicazioni EDM. In questo esempio la stringa di connessione include il nome della classe HumanResources. Il nome della classe è basato sul nome del contenitore di entità.

Per ulteriori informazioni sui contenitori di entità, vedere Contenitori di entità (EDM).

<connectionStrings>
    <add name="HumanResources" connectionString='metadata=.;
    provider=System.Data.SqlClient; provider connection 
                                          string="server=servername;
    database=AdventureWorks; integrated security=true;
    multipleactiveresultsets=true"' providerName="System.Data.Mapping"/>
</connectionStrings>

Con la stringa di connessione precedente nel file exe.config, per creare un'istanza di HumanResources EntityConnection per l'utilizzo nel codice dell'applicazione è sufficiente l'istruzione seguente.

HumanResources hrDb = new HumanResources();

Spazio dei nomi e mapping

L'elemento Schema dello schema CSDL contiene il nome dello spazio dei nomi utilizzato per identificare il modello a oggetti.

<?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 allo spazio dei nomi dei metadati di destinazione AdventureWorksHRTarget.

Gli elementi EntityContainer nello schema concettuale e nello schema di archiviazione sono indipendenti dagli elementi Schema anche se sono contenuti dagli elementi Schema. Nella specifica di mapping l'elemento EntityContainerMapping esegue il mapping dei due spazi dei nomi tramite riferimenti ai relativi oggetti contenitore senza riferimento ai nomi degli spazi dei nomi: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

L'intestazione MSL 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:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS" 
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

Alias

All'attributo Namespace CSDL è associato un attributo Alias associato che può essere utilizzato per abbreviare il nome dello spazio dei nomi nel resto dello schema. Nell'esempio seguente viene assegnata la stringa Self all'attributo Alias.

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

L'attributo Alias è molto utile nel resto dello schema e migliora la leggibilità, come illustrato nella sintassi seguente.

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />

Xmlns

Nell'esempio precedente è contenuto anche un attributo xmlns a cui è assegnato un URL. Tutti gli schemi CSDL utilizzano questo stesso URL.

Vedere anche

Concetti

Schema dei metadati di archiviazione (SSDL)
Specifica di mapping (MSL)
Modello completo di AdventureWorks (EDM)