以映射规范语言 (MSL) 表示的 ComplexProperty 元素定义概念模型实体类型中的复杂类型属性与基础数据库中的表列之间的映射。 属性-列映射在子 ScalarProperty 元素中指定。
ComplexType 属性元素可以具有以下子元素:
ScalarProperty(零个或多个)
ComplexProperty(零个或多个)
ComplextTypeMapping(零个或多个)
Condition(零个或多个)
适用的特性
下表介绍适用于 ComplexProperty 元素的特性:
特性名称 | 是否必需 | 值 |
---|---|---|
Name |
是 |
概念模型中要映射的实体类型的复杂属性的名称。 |
TypeName |
否 |
概念模型属性类型的命名空间限定名称。 |
示例
下面的示例基于 School 模型。 下面的复杂类型已添加到概念模型中:
<ComplexType Name="FullName">
<Property Type="String" Name="LastName"
Nullable="false" MaxLength="50"
FixedLength="false" Unicode="true" />
<Property Type="String" Name="FirstName"
Nullable="false" MaxLength="50"
FixedLength="false" Unicode="true" />
</ComplexType>
Person 实体类型的 LastName 和 FirstName 属性已由一个复杂属性 (Name) 所取代:
<EntityType Name="Person">
<Key>
<PropertyRef Name="PersonID" />
</Key>
<Property Name="PersonID" Type="Int32" Nullable="false"
annotation:StoreGeneratedPattern="Identity" />
<Property Name="HireDate" Type="DateTime" />
<Property Name="EnrollmentDate" Type="DateTime" />
<Property Name="Name" Type="SchoolModel.FullName" Nullable="false" />
</EntityType>
下面的 MSL 演示了用于将 Name 属性映射到基础数据库中的列的 ComplexProperty 元素:
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
<ComplexProperty Name="Name" TypeName="SchoolModel.FullName">
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
</ComplexProperty>
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>