Schema 元素 (CSDL)

Schema 元素是概念模型定义的根元素。它包括构成概念模型的对象、函数和容器的定义。

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

Schema 元素可能包含零个或一个批注元素

备注

Function 元素和批注元素只能用在面向 .NET Framework 版本 4 或更高版本的应用程序的概念模型中。此类模型的 XML 命名空间为 https://schemas.microsoft.com/ado/2008/09/edm。

Schema 元素使用 Namespace 特性为概念模型中的实体类型、复杂类型和关联对象定义命名空间。在命名空间内,任何两个对象都不能同名。命名空间可以跨多个 Schema 元素和多个 .csdl 文件。

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

适用的特性

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

特性名

是否必需

Namespace

概念模型的命名空间。Namespace 特性的值用于构成类型的完全限定名称。例如,如果名为 Customer 的 EntityType 位于 Simple.Example.Model 命名空间中,则 EntityType 的完全限定名称为 SimpleExampleModel.Customer。

不能将下面的字符串用作 Namespace 特性的值:System、Transient 或 Edm。Namespace 特性的值不能与 SSDL Schema 元素中 Namespace 特性的值相同。

Alias

用于取代命名空间名称的标识符。例如,如果名为 Customer 的 EntityType 位于 Simple.Example.Model 命名空间中,而 Alias 特性的值为 Model,则可以将 Model.Customer 用作 EntityType. 的完全限定名称。

备注

可以将任何数量的批注特性(自定义 XML 特性)应用于 Schema 元素。然而,自定义特性可能不属于为 CSDL 保留的任何 XML 命名空间。任何两个自定义特性的完全限定名称都不能相同。

示例

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

请参阅

概念

实体框架概述

CSDL 规范

其他资源

CSDL、SSDL 和 MSL 规范

ADO.NET 实体数据模型工具