property

属性是实体类型复杂类型的基本构造块。 属性定义了实体类型实例或复杂类型实例要包含的数据的形状和特征。 概念模型中的属性类似于为类定义的属性。 正如类的属性定义类的形状和携带有关对象的信息一样,概念模型中的属性也定义实体类型的形状和携带有关实体类型实例的信息。

备注

本主题中描述的属性不同于导航属性。 有关详细信息,请参阅导航属性

属性定义包含以下信息:

  • 一个属性名称。 (必需)

  • 属性类型。 (必需)

  • 一组方面。 (可选)

属性可以包含基元数据(例如字符串、整数或布尔值)或结构化数据(例如复杂类型)。 基元类型的属性也称为标量属性。 有关详细信息,请参阅实体数据模型:基元数据类型

备注

复杂类型本身可以具有复杂类型的属性。

示例

下图显示了一个具有三个实体类型的概念模型:BookPublisherAuthor。 每个实体类型具有多个属性,但图中没有传达每个属性的类型信息。 那些是实体键的属性会用 (Key) 进行标示。

Example model with three entity types

ADO.NET 实体框架使用一种称为概念架构定义语言 (CSDL) 的域特定语言 (DSL) 来定义概念模型。 下面的 CSDL 定义了 Book 实体类型(如上图所示)并使用 XML 特性表明了每个属性的类型和名称。 此外,还使用 XML 特性定义了一个可选方面 Nullable

<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>

图中所示的其中一个属性还可以是复杂类型属性。 例如,Address 实体类型的 Publisher 属性可以是由多个标量属性(例如 StreetAddressCityStateOrProvinceCountryPostalCode)构成的复杂类型属性。 这种复杂类型的 CSDL 表示方式如下所示:

<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>

请参阅