Schema 元素 (CSDL)

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

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

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

Bb399276.note(zh-cn,VS.100).gif注意:
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 特性的值用于构成类型的完全限定名称。 例如,如果名为 CustomerEntityType 位于 Simple.Example.Model 命名空间中,则 EntityType 的完全限定名称为 SimpleExampleModel.Customer。

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

Alias

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

Bb399276.note(zh-cn,VS.100).gif注意:
可以将任何数量的批注特性(自定义 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 Entity Data Model Tools