Condition-Element (MSL)
Das Condition-Element der Mapping Specification Language (MSL) definiert Bedingungen für Zuordnungen zwischen dem konzeptionellen Modell und der zugrunde liegenden Datenbank.Die innerhalb eines XML-Knotens definierte Zuordnung ist gültig, wenn alle Bedingungen, die in untergeordneten Condition-Elementen angegeben werden, erfüllt werden.Andernfalls ist die Zuordnung ungültig.Wenn ein MappingFragment-Element z. B. ein oder mehrere untergeordnete Condition-Elemente enthält, ist die innerhalb des MappingFragment-Knotens definierte Zuordnung nur gültig, wenn alle Bedingungen für die untergeordneten Condition-Elemente erfüllt werden.
Jede Bedingung kann entweder für Name (der Name einer Entitätseigenschaft im konzeptionellen Modell, der durch das Name-Attribut angegeben wurde) oder für ColumnName (der Name einer Datenbankspalte, der durch das ColumnName-Attribut angegeben wurde) gelten.Wenn das Name-Attribut festgelegt wird, wird die Bedingung mit einem Entitätseigenschaftswert verglichen.Wenn das ColumnName-Attribut festgelegt wird, wird die Bedingung mit einem Spaltenwert verglichen.Nur eines der Attribute Name bzw. ColumnName kann in einem Condition-Element angegeben werden.
Hinweis
Wenn das Condition-Element in einem FunctionImportMapping-Element verwendet wird, ist nur das Name-Attribut nicht anwendbar.
Das Condition-Element kann ein untergeordnetes Element der folgenden Elemente sein:
Das Condition-Element kann keine untergeordneten Elemente haben.
Anwendbare Attribute
In der folgenden Tabelle werden die Attribute beschrieben, die auf das Condition-Element anwendbar sind:
Attributname |
Ist erforderlich |
Wert |
---|---|---|
ColumnName |
Nein |
Der Name der Tabellenspalte, deren Wert zur Auswertung der Bedingung verwendet wird. |
IsNull |
Nein |
True oder False.Wenn der Wert gleich Trueund der Spaltenwert null ist oder wenn der Wert gleich False und der Spaltenwert ungleich null, dann ist die Bedingung erfüllt (true).Andernfalls ist die Bedingung nicht erfüllt (false). Das IsNull-Attribut und das Value-Attribut können nicht gleichzeitig verwendet werden. |
Value |
Nein |
Der Wert, mit dem der Spaltenwert verglichen werden soll.Wenn die Werte gleich sind, wird die Bedingung erfüllt (true).Andernfalls ist die Bedingung nicht erfüllt (false). Das IsNull-Attribut und das Value-Attribut können nicht gleichzeitig verwendet werden. |
Name |
Nein |
Der Name der Entitätseigenschaft im konzeptionellen Modell, deren Wert zur Auswertung der Bedingung verwendet wird. Dieses Attribut ist nicht anwendbar, wenn das Condition-Element innerhalb eines FunctionImportMapping-Elements verwendet wird. |
Beispiel
Im folgenden Beispiel werden Condition-Elemente als untergeordnete Elemente von MappingFragment-Elementen dargestellt.Wenn HireDate nicht NULL und EnrollmentDate NULL ist, werden Daten dem SchoolModel.Instructor-Typ und den Spalten PersonID und den HireDate der Person-Tabelle zugeordnet.Wenn EnrollmentDate nicht NULL und HireDate NULL ist, werden Daten dem SchoolModel.Student-Typ und den Spalten PersonID und Enrollment der Person-Tabelle zugeordnet.
<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>