Schema (Elemento) (CSDL)

El elemento Schema es el elemento raíz de una definición de modelo conceptual.Contiene las definiciones para los objetos, las funciones y los contenedores que conforman un modelo conceptual.

El elemento Schema puede contener cero o varios de los elementos secundarios siguientes:

Un elemento Schema puede contener cero o un elemento Annotation.

Nota

El elemento Function y los elementos de anotación solo se admiten en los modelos conceptuales para las aplicaciones destinadas a la versión 4 o posterior de .NET Framework.El espacio de nombres XML para dichos modelos es https://schemas.microsoft.com/ado/2008/09/edm.

El elemento Schema usa el atributo Namespace para definir el espacio de nombres para el tipo de entidad, el tipo complejo y los objetos de asociación de un modelo conceptual.Dentro de un espacio de nombres, no puede haber dos objetos con el mismo nombre.Los espacios de nombres pueden abarcar varios elementos Schema y varios archivos .csdl.

El espacio de nombres de un modelo conceptual es diferente del espacio de nombres XML del elemento Schema.El espacio de nombres de un modelo conceptual (tal y como lo define el atributo Namespace) es un contenedor lógico para tipos de entidad, tipos complejos y tipos de asociación.El espacio de nombres XML (indicado por el atributo xmlns) de un elemento Schema es el espacio de nombres predeterminado para los elementos secundarios y los atributos del elemento Schema.Los espacios de nombres XML del tipo https://schemas.microsoft.com/ado/AAAA/MM/edm (donde AAAA y MM representan un año y un mes respectivamente) se reservan para CSDL.No puede haber elementos y atributos personalizados en espacios de nombres que tengan este formato.

Atributos aplicables

En la tabla siguiente se describen los atributos que se pueden aplicar al elemento Schema.

Nombre de atributo

Es necesario

Valor

Namespace

El espacio de nombres del modelo conceptual.El valor del atributo Namespace se usa para formar el nombre completo de un tipo.Por ejemplo, si un atributo EntityType denominado Customer está en el espacio de nombres Simple.Example.Model, el nombre completo de EntityType es SimpleExampleModel.Customer.

Las cadenas siguientes no se pueden usar como valores para el atributo Namespace: System, Transient o Edm.El valor del atributo Namespace no puede coincidir con el valor del atributo Namespace del elemento esquema SSDL.

Alias

No

Un identificador usado en lugar del nombre del espacio de nombres.Por ejemplo, si un atributo EntityType denominado Customer está en el espacio de nombres Simple.Example.Model y el valor del atributo Alias es Model, puede usar Model.Customer como nombre completo del atributo EntityType.

Nota

Se puede aplicar cualquier número de atributos de anotación (atributos XML personalizados) al elemento Schema.Sin embargo, es posible que los atributos personalizados no pertenezcan a ningún espacio de nombres XML reservado para CSDL.Dos atributos personalizados cualesquiera no pueden tener nombres completos idénticos.

Ejemplo

En el ejemplo siguiente se muestra un elemento Schema que contiene un elemento EntityContainer, dos elementos EntityType y un elemento Association.

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

Vea también

Conceptos

Información general de Entity Framework

Especificación CSDL

Otros recursos

Especificaciones CSDL, SSDL y MSL

Herramientas de ADO.NET Entity Data Model