Élément Condition (MSL)
Dans le langage MSL (Mapping Specification Language), l'élément Condition fixe les conditions de mappage entre le modèle conceptuel et la base de données sous-jacente. Le mappage défini dans un nœud XML est valide si toutes les conditions spécifiées dans les éléments Condition enfants sont réunies. À défaut, le mappage n'est pas valide. Par exemple, si un élément MappingFragment contient un ou plusieurs éléments enfants Condition, le mappage défini dans le nœud MappingFragment n'est valide que si toutes les conditions des éléments Condition enfants sont réunies.
Chaque condition peut s'appliquer à un attribut Name (nom d'une propriété d'entité de modèle conceptuel spécifié par l'attribut Name) ou ColumnName (nom d'une colonne de la base de données spécifié par l'attribut ColumnName). Lorsque l'attribut Name est défini, la condition est vérifiée par rapport à une valeur de propriété d'entité. Lorsque l'attribut ColumnName est défini, la condition est vérifiée par rapport à une valeur de colonne. Un seul attribut, Name ou ColumnName, peut être spécifié dans un élément Condition.
Remarque : |
---|
Lorsque l'élément Condition est utilisé dans un élément FunctionImportMapping, seul l'attribut Name n'est pas applicable. |
L'élément Condition peut être un enfant des éléments suivants :
L'élément Condition ne peut pas avoir d'éléments enfants.
Attributs applicables
Le tableau ci-dessous décrit les attributs applicables à l'élément Condition :
Nom d'attribut | Requis | Valeur |
---|---|---|
ColumnName |
Non |
Nom de la colonne de table dont la valeur est utilisée pour évaluer la condition. |
IsNull |
Non |
True ou False. Si la valeur est True et que la valeur de colonne est Null, ou si la valeur est False et que la valeur de colonne n'est pas Null, la condition est vérifiée (True). Sinon, la condition n'est pas vérifiée (False). Les attributs IsNull et Value ne peuvent pas être utilisés en même temps. |
Value |
Non |
Valeur à laquelle la valeur de colonne est comparée. Si les valeurs sont identiques, la condition est vérifiée (True). Sinon, la condition n'est pas vérifiée (False). Les attributs IsNull et Value ne peuvent pas être utilisés en même temps. |
Name |
Non |
Nom de la propriété d'entité de modèle conceptuel dont la valeur est utilisée pour évaluer la condition. Cet attribut n'est pas applicable si l'élément Condition est utilisé dans un élément FunctionImportMapping. |
Exemple
L'exemple suivant illustre des éléments Condition en qualité d'enfants d'éléments MappingFragment. Lorsque HireDate n'a pas la valeur null et que EnrollmentDate a la valeur null, les données sont mappées entre le type SchoolModel.Instructor et les colonnes PersonID et HireDate de la table Person. Lorsque EnrollmentDate n'a pas la valeur null et que HireDate a la valeur null, les données sont mappées entre le type SchoolModel.Student et les colonnes PersonID et Enrollment de la table Person.
<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>
Voir aussi
Autres ressources
Spécifications CSDL, SSDL et MSL
Modélisation et mappage (Entity Framework)