实体类型 (EDM)
在 实体数据模型 (EDM) 中,EntityType 是用于应用程序域中的数据类型的设计模板。实体声明以概要方式表示特定的数据类型。表结构或代码可以非常顺利地使用架构以指定该数据类型的所有详细信息。在设计完成后,将基于此设计生成可编程数据类型。
EDM EntityType 用于对顶级概念(如业务应用程序中的客户、订单或供应商)建模。每个实体都在概念架构定义语言 (CSDL) 中定义为一个 EntityType。在以概要方式定义 EntityType 之后,它将成为用于应用程序开发的操作单元。每个 EntityType 在概念上都是独立的并且具有唯一标识。
实体属性和标识
架构中的 EntityType 具有名称、属性以及一个在由应用程序代码实例化时标识数据类型的 Key 属性。
有关 EntityType 的大多数信息由其各个属性包含。属性是 EDM SimpleType 或 ComplexType 类型的数据。属性具有单个值,不过 NavigationProperty 类型可以与 Association 一起使用以实现与数据项集合行为类似的属性。有关导航属性的更多信息,请参见 EDM 中的导航属性 (EDM)。有关关联的更多信息,请参见实体数据模型关系。
属性
属性通过为指定数据类型的值定义唯一名称向 EntityType 添加信息。属性 (Property) 规范包括名称和类型,可以使用 GetterAccess 和 SetterAccess 属性 (Attribute) 指定访问约束。属性的类型从指定为 EDM SimpleType 的类型中进行选择。
除了参与 Key 的属性之外的所有属性都可以具有 Null 值。下面的示例演示 EntityType 的声明。
<EntityType Name="Person">
<Key>
<PropertyRef Name="EmailID"/>
</Key>
<Property Name="EmailID" Type="String" Nullable="false" />
<Property Name="Name" Type="String" />
<Property Name="Address" Type="String" />
<Property Name="PhoneNumber" Type=" String"/>
</EntityType>
在此示例中,EmailID
属性被指定为此实体中的 Key 属性。该键不能为 Null
,即 Person 实例必须具有电子邮件标识符。Key 用于在使用该类型的应用程序中标识该类型的实例。
实体键
EntityType 必须定义一个 Key,其中包含为该类型定义的一个或多个属性。任何一组 SimpleType 属性均可充当 Key。在 Key 中使用的任何属性在应用程序代码中均不能为 Null
。
注意 |
---|
出于性能和可预测性这两方面的原因,将 String 类型用作 Key 并非良策;str1 == str2 的含义非常模糊不清。 |
下面的示例演示如何使用两个 SimpleType 属性 (Property) 将 Key 属性 (Attribute) 分配给一个组合 Key:
<EntityType Name="Person">
<Key>
<PropertyRef Name="ContactId" />
<PropertyRef Name="Name" />
</Key>
<Property Name="ContactId" Type="String" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="PhoneNumber" Type="String" />
</EntityType>