EntityTypeMapping 元素 (MSL)
以映射规范语言 (MSL) 表示的 EntityTypeMapping 元素会定义概念模型中的实体类型与基础数据库中的表或视图之间的映射。 有关概念模型实体类型与基础数据库表或视图的信息,请参见 EntityType 元素 (CSDL) 和 EntitySet 元素 (SSDL)。 被映射的概念模型实体类型由 EntityTypeMapping 元素的 TypeName 特性指定。 被映射的表或视图由子 MappingFragment 元素的 StoreEntitySet 特性指定。
ModificationFunctionMapping 子元素可以用于将实体类型的插入、更新、或删除函数映射到数据库中的存储过程。
EntityTypeMapping 元素可以具有以下子元素:
MappingFragment(零个或多个)
ModificationFunctionMapping(零个或一个)
注意: |
---|
MappingFragment 和 ModificationFunctionMapping 元素不能同时为 EntityTypeMapping 元素的子元素。 |
注意: |
---|
在 FunctionImportMapping 元素内使用 EntityTypeMapping 元素时,ScalarProperty 和 Condition 元素只能是该元素的子元素。 |
适用的特性
下表介绍可应用于 EntityTypeMapping 元素的特性。
特性名称 | 是否必需 | 值 |
---|---|---|
TypeName |
是 |
要映射的概念模型实体类型的命名空间限定的名称。 如果类型为抽象类型或派生类型,则值必须为 |
示例
下面的示例显示具有两个子 EntityTypeMapping 元素的 EntitySetMapping 元素。 在第一个 EntityTypeMapping 元素中,SchoolModel.Person 实体类型将映射到 Person 表。 在第二个 EntityTypeMapping 元素中,SchoolModel.Person 类型的更新功能将映射到数据库中的存储过程 UpdatePerson。
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate" ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
示例
下一示例演示其中根类型为抽象类型的类型层次结构的映射。 请注意 TypeName 特性的 IsOfType
语法的用法。
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<Condition ColumnName="HireDate" IsNull="false" />
<Condition ColumnName="EnrollmentDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
<Condition ColumnName="EnrollmentDate" IsNull="false" />
<Condition ColumnName="HireDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>