Condition 元素 (MSL)
以映射规范语言 (MSL) 表示的 Condition 元素将映射的条件置于概念模型和基础数据库之间。 如果按照子 Condition 元素中的指定,所有条件均满足,则 XML 节点内定义的映射有效。 否则,该映射无效。 例如,如果 MappingFragment 元素包含一个或多个 Condition 子元素,则 MappingFragment 节点内定义的映射将只在子 Condition 元素的所有条件均满足的情况下有效。
每个条件均可应用于 Name(概念模型实体属性的名称,由 Name 特性指定)或 ColumnName(数据库中列的名称,由 ColumnName 特性指定)。 在设置 Name 特性时,将根据实体属性值对条件进行检查。 在设置 ColumnName 特性时,将根据列值对条件进行检查。 在 Condition 元素中仅能指定 Name 或 ColumnName 特性之一。
注意: |
---|
在 FunctionImportMapping 元素内使用 Condition 元素时,只有 Name 特性不适用。 |
Condition 元素可以是以下元素的子元素:
Condition 元素可以没有子元素。
适用的特性
下表介绍适用于 Condition 元素的特性:
特性名称 | 是否必需 | 值 |
---|---|---|
ColumnName |
否 |
表列的名称,其值用于计算条件。 |
IsNull |
否 |
True 或 False。 如果值为 True 且列值为 null,或者如果值为 False 但列值不为 null,则条件为 True。 否则,条件为 False。 IsNull 和 Value 特性不能同时使用。 |
Value |
否 |
要与列值进行比较的值。 如果值不同,则该条件为 True。 否则,条件为 False。 IsNull 和 Value 特性不能同时使用。 |
Name |
否 |
概念模型实体属性的名称,其值用于计算条件。 如果在 FunctionImportMapping 元素内使用 Condition 元素,则此特性不适用。 |
示例
下面的示例显示作为 MappingFragment 元素的子元素的 Condition 元素。 如果 HireDate 不为 Null 且 EnrollmentDate 为 Null,则将在 SchoolModel.Instructor 类型和 PersonID 与 Person 表的 HireDate 列之间映射数据。 如果 EnrollmentDate 不为 Null 且 HireDate 为 Null,则将在 SchoolModel.Student 类型和 PersonID 与 Person 表的 Enrollment 列之间映射数据。
<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>