Property 元素 (CSDL)

以概念架构定义语言 (CSDL) 表示的 Property 元素可以是 EntityType 元素ComplexType 元素RowType 元素的子元素。

EntityType 和 ComplexType 元素应用程序

Property 元素(作为 EntityTypeComplexType 元素的子元素)定义实体类型实例或复杂类型实例要包含的数据的形状和特征。 概念模型中的属性类似于为类定义的属性。 正如类的属性定义类的形状和携带有关对象的信息一样,概念模型中的属性也定义实体类型的形状和携带有关实体类型实例的信息。

Property 元素可以具有以下子元素(按所列顺序):

以下方面可以应用于 Property 元素:NullableDefaultValueMaxLengthFixedLengthPrecisionScaleUnicodeCollationConcurrencyMode。 方面是一些 XML 特性,它们提供有关如何在数据存储区中存储属性值的信息。 有关更多信息,请参见方面 (CSDL)

Bb399546.note(zh-cn,VS.100).gif注意:
方面只能应用于类型为 EDMSimpleType 的属性。有关更多信息,请参见概念模型类型

适用的特性

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

特性名称 是否必需

Name

属性的名称。

Type

属性值的类型。 属性值类型必须为模型作用域内的 EDMSimpleType 或复杂类型(由完全限定名称指示)。 有关更多信息,请参见概念模型类型

Nullable

True(默认值)或 False,具体取决于属性是否可以具有 null 值。

Bb399546.note(zh-cn,VS.100).gif注意:
在由 https://schemas.microsoft.com/ado/2006/04/edm 命名空间指示的 CSDL 版本中,复杂类型属性必须具有 Nullable="False"

DefaultValue

属性的默认值。

MaxLength

属性值的最大长度。

FixedLength

TrueFalse,具体取决于属性值是否将作为固定长度字符串存储。

Precision

属性值的精度。

Scale

属性值的刻度。

Unicode

TrueFalse,具体取决于属性值是否将作为 Unicode 字符串存储。

Collation

指定要在数据源中使用的排序序列的字符串。

ConcurrencyMode

None(默认值)或 Fixed。 如果值设置为 Fixed,则属性值将用于开放式并发检查。

Bb399546.note(zh-cn,VS.100).gif注意:
可以将任何数量的批注特性(自定义 XML 特性)应用于 Property 元素。然而,自定义特性可能不属于为 CSDL 保留的任何 XML 命名空间。任何两个自定义特性的完全限定名称都不能相同。

示例

下面的示例演示一个具有三个 Property 元素的 EntityType 元素:

<EntityType Name="Book">
  <Key>
    <PropertyRef Name="ISBN" />
  </Key>
  <Property Type="String" Name="ISBN" Nullable="false" />
  <Property Type="String" Name="Title" Nullable="false" />
  <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
  <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                      FromRole="Book" ToRole="Publisher" />
  <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                      FromRole="Book" ToRole="Author" />
</EntityType>

下面的示例演示一个具有五个 Property 元素的 ComplexType 元素:

<ComplexType Name="Address" >
  <Property Type="String" Name="StreetAddress" Nullable="false" />
  <Property Type="String" Name="City" Nullable="false" />
  <Property Type="String" Name="StateOrProvince" Nullable="false" />
  <Property Type="String" Name="Country" Nullable="false" />
  <Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>

RowType 元素应用

Property 元素(作为 RowType 元素的子元素)定义可以传递到模型定义函数或从该函数返回的数据的形状和特征。 有关更多信息,请参见 Function 元素 (CSDL)

Property 元素可以正好具有以下子元素之一:

Property 元素可以具有任意数量的子批注元素

Bb399546.note(zh-cn,VS.100).gif注意:
批注元素只能用在面向 .NET Framework 版本 4 或更高版本的应用程序的概念模型中。此类模型的 XML 命名空间为 https://schemas.microsoft.com/ado/2008/09/edm。

适用的特性

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

特性名称 是否必需

Name

属性的名称。

Type

属性值的类型。

Nullable

True(默认值)或 False,具体取决于属性是否可以具有 null 值。

Bb399546.note(zh-cn,VS.100).gif注意:
在由 https://schemas.microsoft.com/ado/2006/04/edm 命名空间指示的 CSDL 版本中,复杂类型属性必须具有 Nullable="False"

DefaultValue

属性的默认值。

MaxLength

属性值的最大长度。

FixedLength

TrueFalse,具体取决于属性值是否将作为固定长度字符串存储。

Precision

属性值的精度。

Scale

属性值的刻度。

Unicode

TrueFalse,具体取决于属性值是否将作为 Unicode 字符串存储。

Collation

指定要在数据源中使用的排序序列的字符串。

Bb399546.note(zh-cn,VS.100).gif注意:
可以将任何数量的批注特性(自定义 XML 特性)应用于 Property 元素。然而,自定义特性可能不属于为 CSDL 保留的任何 XML 命名空间。任何两个自定义特性的完全限定名称都不能相同。

示例

下面的示例演示用于定义模型定义函数的返回类型的形状的 Property 元素。

<Function Name="LastNamesAfter">
  <Parameter Name="someString" Type="Edm.String" />
  <ReturnType>
   <CollectionType>
     <RowType>
       <Property Name="FirstName" Type="Edm.String" Nullable="false" />
       <Property Name="LastName" Type="Edm.String" Nullable="false" />
     </RowType>
   </CollectionType>
  </ReturnType>
  <DefiningExpression>
            SELECT VALUE ROW(p.FirstName, p.LastName)
            FROM SchoolEntities.People AS p
            WHERE p.LastName &gt;= somestring
  </DefiningExpression>
</Function>

另请参见

概念

实体框架概述
CSDL 规范
Schema 元素 (CSDL)
FunctionImport 元素 (CSDL)

其他资源

CSDL、SSDL 和 MSL 规范
ADO.NET Entity Data Model Tools
property (Entity Data Model)
facet (Entity Data Model)