Schema 元素 (SSDL)

以存储架构定义语言 (SSDL) 表示的 Schema 元素是存储模型定义的根元素。 它包括构成存储模型的对象、函数和容器的定义。

Schema 元素可能包含下面的零个或多个子元素:

Schema 元素使用 Namespace 特性为存储模型中的实体类型和关联对象定义命名空间。 在命名空间内,任何两个对象都不能同名。

存储模型命名空间与 Schema 元素的 XML 命名空间不同。 存储模型命名空间(由 Namespace 特性定义)是实体类型和关联类型的逻辑容器。 Schema 元素的 XML 命名空间(由 xmlns 特性指示)是用于 Schema 元素的子对象和特性的默认命名空间。 格式为 https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl(其中 YYYY 和 MM 分别表示年度和月份)的 XML 命名空间是为 SSDL 保留的。 自定义元素和特性不能位于具有此格式的命名空间中。

适用的特性

下表介绍可应用于 Schema 元素的特性。

特性名称 是否必需

Namespace

存储模型的命名空间。 Namespace 特性的值用于构成类型的完全限定名称。 例如,如果名为 CustomerEntityType 位于 ExampleModel.Store 命名空间中,则 EntityType 的完全限定名称为 ExampleModel.Store.Customer。

不能将下面的字符串用作 Namespace 特性的值:SystemTransientEdmNamespace 特性的值不能与 CSDL Schema 元素中 Namespace 特性的值相同。

Alias

用于取代命名空间名称的标识符。 例如,如果名为 CustomerEntityType 位于 ExampleModel.Store 命名空间中并且 Alias 特性的值为 StorageModel,则可以将 StorageModel.Customer 用作 EntityType 的完全限定名称。

Provider

数据提供程序。 有关更多信息,请参见实体框架数据提供程序

ProviderManifestToken

一个标记,该标记指示提供程序清单返回到的提供程序。 没有为该标记定义格式。 标记的值由提供程序定义。 有关 SQL Server 提供程序清单标记的信息,请参见用于实体框架的 SQL Server .NET Framework 数据提供程序 (SqlClient)

示例

下面的示例显示了一个 Schema 元素,它包含一个 EntityContainer 元素、两个 EntityType 元素以及一个 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>

另请参见

概念

实体框架概述
SSDL 规范

其他资源

CSDL、SSDL 和 MSL 规范
ADO.NET Entity Data Model Tools