Compartir a través de


Schema (Elemento) (SSDL)

El elemento Schema del lenguaje de definición de esquemas de almacenamiento (SSDL) es el elemento raíz de la definición de un modelo de almacenamiento. Contiene las definiciones para los objetos, las funciones y los contenedores que conforman un modelo de almacenamiento.

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

El elemento Schema usa el atributo Namespace para definir el espacio de nombres para los objetos de asociación y tipo de entidad de un modelo de almacenamiento. Dentro de un espacio de nombres, no puede haber dos objetos con el mismo nombre.

El espacio de nombres de un modelo de almacenamiento es diferente del espacio de nombres XML del elemento Schema. El espacio de nombres de un modelo de almacenamiento (tal y como lo define el atributo Namespace) es un contenedor lógico para tipos de entidad 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/ssdl (donde AAAA y MM representan un año y un mes respectivamente) se reservan para SSDL. 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 de almacenamiento. 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 ExampleModel.Store, el nombre completo de EntityType es ExampleModel.Store.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 CSDL.

Alias

No

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

Provider

El proveedor de datos. Para obtener más información, vea Proveedores de datos de Entity Framework.

ProviderManifestToken

Un token que indica al proveedor qué manifiesto del proveedor debe devolver. No se define ningún formato para el token. El proveedor define los valores para el token. Para obtener información acerca de los tokens de manifiesto de proveedor de SQL Server, vea Proveedor de datos .NET Framework para SQL Server (SqlClient) para Entity Framework.

Ejemplo

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

<Schema Namespace="ExampleModel.Store" 
      Alias="Self" Provider="System.Data.SqlClient" 
      ProviderManifestToken="2008" 
      xmlns="https://schemas.microsoft.com/ado/2009/02/edm/ssdl">
  <EntityContainer Name="ExampleModelStoreContainer">
    <EntitySet Name="Customers" 
               EntityType="ExampleModel.Store.Customers" 
               Schema="dbo" />
    <EntitySet Name="Orders" 
               EntityType="ExampleModel.Store.Orders" 
               Schema="dbo" />
    <AssociationSet Name="FK_CustomerOrders" 
                    Association="ExampleModel.Store.FK_CustomerOrders">
      <End Role="Customers" EntitySet="Customers" />
      <End Role="Orders" EntitySet="Orders" />
    </AssociationSet>
  </EntityContainer>
  <EntityType Name="Customers">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
  </EntityType>
  <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="int" Nullable="false" 
              c:CustomAttribute="someValue"/>
    <Property Name="ProductId" Type="int" Nullable="false" />
    <Property Name="Quantity" Type="int" Nullable="false" />
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <c:CustomElement>
      Custom data here.
    </c:CustomElement>
  </EntityType>
  <Association Name="FK_CustomerOrders">
    <End Role="Customers" 
         Type="ExampleModel.Store.Customers" Multiplicity="1">
      <OnDelete Action="Cascade" />
    </End>
    <End Role="Orders" 
         Type="ExampleModel.Store.Orders" Multiplicity="*" />
    <ReferentialConstraint>
      <Principal Role="Customers">
        <PropertyRef Name="CustomerId" />
      </Principal>
      <Dependent Role="Orders">
        <PropertyRef Name="CustomerId" />
      </Dependent>
    </ReferentialConstraint>
  </Association>
  <Function Name="UpdateOrderQuantity" 
            Aggregate="false" 
            BuiltIn="false" 
            NiladicFunction="false" 
            IsComposable="false" 
            ParameterTypeSemantics="AllowImplicitConversion" 
            Schema="dbo">
    <Parameter Name="orderId" Type="int" Mode="In" />
    <Parameter Name="newQuantity" Type="int" Mode="In" />
  </Function>
  <Function Name="UpdateProductInOrder" IsComposable="false">
    <CommandText>
      UPDATE Orders
      SET ProductId = @productId
      WHERE OrderId = @orderId;
    </CommandText>
    <Parameter Name="productId"
               Mode="In"
               Type="int"/>
    <Parameter Name="orderId"
               Mode="In"
               Type="int"/>
  </Function>
</Schema>

Vea también

Conceptos

Información general de Entity Framework
Especificación SSDL

Otros recursos

Especificaciones CSDL, SSDL y MSL
ADO.NET Entity Data Model Tools