Elemento Condition (MSL)
L'elemento Condition in MSL (Mapping Specification Language) consente di stabilire le condizioni per i mapping tra il modello concettuale e il database sottostante.Il mapping definito all'interno di un nodo XML è valido se tutte le condizioni, come specificato negli elementi Condition figlio, sono soddisfatte.In caso contrario, il mapping non è valido.Se ad esempio in un elemento MappingFragment sono contenuti uno o più elementi Condition figlio, il mapping definito all'interno del nodo MappingFragment sarà valido solo se vengono soddisfatte tutte le condizioni degli elementi Condition figlio.
Ogni condizione può essere applicata a un oggetto Name (il nome di una proprietà dell'entità del modello concettuale, specificato dall'attributo Name) o a un oggetto ColumnName (il nome di una colonna nel database, specificato dall'attributo ColumnName).Quando l'attributo Name è impostato, la condizione viene confrontata con un valore della proprietà dell'entità.Quando l'attributo ColumnName è impostato, la condizione viene confrontata con il valore di una colonna.Solo uno degli attributi Name o ColumnName può essere specificato in un elemento Condition.
Nota
Quando l'elemento Condition viene utilizzato all'interno di un elemento FunctionImportMapping, solo l'attributo Name non è applicabile.
L'elemento Condition può essere un figlio dei seguenti elementi:
L'elemento Condition non può includere alcun elemento figlio.
Attributi applicabili
Nella tabella riportata di seguito vengono descritti gli attributi applicabili all'elemento Condition:
Nome attributo |
È obbligatorio |
Valore |
---|---|---|
ColumnName |
No |
Nome della colonna della tabella il cui valore viene utilizzato per valutare la condizione. |
IsNull |
No |
True o False.Se il valore è True e il valore della colonna è null o se il valore è False e il valore della colonna non è null, la condizione è true.In caso contrario, la condizione è false. Non è possibile utilizzare contemporaneamente gli attributi IsNull e Value. |
Value |
No |
Valore con cui viene confrontato il valore della colonna.Se i valori sono uguali, la condizione è true.In caso contrario, la condizione è false. Non è possibile utilizzare contemporaneamente gli attributi IsNull e Value. |
Name |
No |
Nome della proprietà dell'entità del modello concettuale il cui valore viene utilizzato per valutare la condizione. Questo attributo non è applicabile se l'elemento Condition viene utilizzato all'interno di un elemento FunctionImportMapping. |
Esempio
Nell'esempio riportato di seguito vengono mostrati gli elementi Condition come figli degli elementi MappingFragment.Quando HireDate non è null e EnrollmentDate è null, i dati vengono mappati tra il tipo SchoolModel.Instructor e le colonne PersonID e HireDate della tabella Person.Quando EnrollmentDate non è null e HireDate è null, i dati vengono mappati tra il tipo SchoolModel.Student e le colonne PersonID e Enrollment della tabella 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>
<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>