Compartir a través de


Atributo Namespace (CSDL)

El nombre del espacio de nombres declarado en el lenguaje de definición de esquemas conceptuales (CSDL) tiene varias funciones en Entity Data Model (EDM). Para que el proceso de generación conecte las clases programables con las estructuras de almacenamiento que conservan los datos de las aplicaciones, los tipos y los contenedores del esquema CSDL deben asignarse a los metadatos de almacenamiento. El lenguaje de especificación de asignaciones (MSL) conecta los tipos conceptuales con las definiciones en el lenguaje de definición de esquemas de almacenamiento (SSDL) que describe el modelo de almacenamiento.

Una vez generado el modelo de objetos a partir del archivo CSDL, el código de la aplicación utiliza el espacio de nombres especificado en el archivo CSDL para hacer referencia a las clases de la DLL creadas por el proceso de generación. La siguiente directiva using identifica las clases del espacio de nombres AdventureWorksHRModel.

using AdventureWorksHRModel;

El espacio de nombres declarado en el esquema CSDL también identifica este modelo de objetos en el archivo exe.config requerido por las aplicaciones EDM. En este ejemplo, la cadena de conexión incluye el nombre de clase HumanResources. Este nombre de clase se basa en el nombre del contenedor de entidades.

Para obtener más información acerca de los contenedores de entidades, vea Contenedores de entidades (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 cadena de conexión anterior en el archivo exe.config, todo lo que se necesita para crear una instancia de HumanResources EntityConnection y usarla en el código de la aplicación es la instrucción siguiente.

HumanResources hrDb = new HumanResources();

Espacio de nombres y asignación

El elemento Schema del esquema CSDL contiene el nombre del espacio de nombres que se utiliza para identificar el modelo de objetos.

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

Hay una línea similar en el archivo SSDL.

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

Los nombres de espacios de nombres que se usan en estas declaraciones reflejan los propósitos en el modelo de datos que se está creando. AdventureWorksHRModel es el modelo conceptual que se asigna al espacio de nombres de metadatos de destino AdventureWorksHRTarget.

Los elementos EntityContainer de los esquemas conceptual y de almacenamiento son independientes de los elementos Schema aunque estén contenidos en los elementos Schema . En la especificación de asignaciones, el elemento EntityContainerMapping asigna los dos espacios de nombres por las referencias a los objetos contenedores sin hacer referencia a los nombre de los espacios de nombres: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

El encabezado siguiente de MSL muestra la asignación entre el contenedor de entidades HumanResources en el esquema conceptual, denominado aquí CdmEntityContainer, y el de los metadatos de almacenamiento, denominado 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

El atributo Namespace de CSDL tiene un atributo Alias asociado que se puede utilizar para acortar el nombre de espacio de nombres en el resto del esquema. En el ejemplo siguiente se asigna la cadena Self al atributo Alias.

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

El atributo Alias es muy útil en el resto del esquema y mejora la legibilidad, como se muestra en la sintaxis siguiente.

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

Xmlns

El ejemplo anterior también contiene un atributo xmlns que tiene asignada una dirección URL. Todos los esquemas CSDL utilizan esta misma dirección URL.

Vea también

Conceptos

Esquema de metadatos de almacenamiento (SSDL)
Especificación de asignaciones (MSL)
Modelo completo (EDM) de AdventureWorks