Condition 元素 (MSL)
對應規格語言 (MSL) 中的 Condition 項目會在概念模型和基礎資料庫間的對應上放置條件。如果所有條件都符合 Condition 子項目中所指定,則在 XML 節點內所定義之對應便有效。否則,對應無效。例如,如果 MappingFragment 項目包含一個或多個 Condition 子項目,則 MappingFragment 節點內所定義之對應,將只在 Condition 子項目的所有條件都符合時才有效。
每個條件可以套用至 Name (由 Name 屬性所指定之概念模型實體屬性的名稱),或套用至 ColumnName (由 ColumnName 屬性所指定之資料庫中的資料行名稱)。若已設定 Name 屬性 (attribute),則會針對實體屬性 (property) 值來檢查條件。若已設定 ColumnName 屬性,則會針對資料行值來檢查條件。在 Condition 項目中只能指定 Name 或 ColumnName 屬性的其中一個。
注意
在 FunctionImportMapping 項目內使用 Condition 項目時,只有 Name 屬性不適用。
Condition 項目可以是下列項目的子項目:
Condition 項目不可以擁有子項目。
適用屬性
下表描述可套用至 Condition 項目的屬性。
屬性名稱 |
必要 |
值 |
---|---|---|
ColumnName |
否 |
其值用來評估條件之資料表資料行的名稱。 |
IsNull |
否 |
True 或 False。如果值是 True 而資料行值是 null,或如果值是 False,而資料行值不是 null,則條件成立。否則,條件不成立。 IsNull 和 Value 屬性不能同時使用。 |
Value |
否 |
要與資料行值比較的值。如果值相同,則條件成立。否則,條件不成立。 IsNull 和 Value 屬性不能同時使用。 |
Name |
否 |
其值用來評估條件之概念模型實體屬性的名稱。 如果在 FunctionImportMapping 項目內使用 Condition 項目,則這個屬性不適用。 |
範例
下列範例顯示 Condition 項目當做 MappingFragment 項目的子項目。當 HireDate 不是 null 而 EnrollmentDate 是 null 時,會對應 SchoolModel.Instructor 類型與 Person 資料表的 PersonID 和 HireDate 資料行間的資料。當 EnrollmentDate 不是 null 而 HireDate 是 null 時,會對應 SchoolModel.Student 類型與 Person 資料表的 PersonID 和 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>
<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>