Поделиться через


Элемент Condition (язык MSL)

Элемент Condition в языке MSL задает условия для сопоставления между концептуальной моделью и основной базой данных. Сопоставление, определенное в XML-узле, является допустимым, если соблюдены все условия, заданные в дочерних элементах Condition. В противном случае сопоставление недействительно. Например, если элемент MappingFragment содержит один или несколько дочерних элементов Condition, то сопоставление, определенное в узле MappingFragment, будет допустимым только при соблюдении всех условий дочерних элементов Condition.

Каждое условие может применяться либо к Name (имени свойства сущности концептуальной модели, заданному атрибутом Name), либо к ColumnName (имени столбца в базе данных, заданному атрибутом ColumnName). При задании атрибута Name проверяется соответствие условия значению свойства сущности. При задании атрибута ColumnName проверяется соответствие условия значению столбца. В элементе Condition может быть задан только один из атрибутов Name или ColumnName.

Cc716732.note(ru-ru,VS.100).gifПримечание
Если элемент Condition используется внутри элемента FunctionImportMapping, то неприменим лишь атрибут Name.

Элемент Condition может быть дочерним элементом следующих элементов:

У элемента Condition не может быть дочерних элементов.

Применимые атрибуты

В следующей таблице описываются атрибуты, которые применимы к элементу Condition.

Имя атрибута Необходимо Значение

ColumnName

Нет

Имя столбца таблицы, значение которого используется для оценки условия.

IsNull

Нет

True или False. При значении True и значении столбца null, либо при значении False, когда значение столбца не равно null, условие считается выполненным. В противном случае условие имеет значение false.

Атрибуты IsNull и Value нельзя использовать одновременно.

Value

Нет

Значение, с которым сравнивается значение столбца. Если значения совпадают, условие верно. В противном случае условие имеет значение false.

Атрибуты IsNull и Value нельзя использовать одновременно.

Name

Нет

Имя свойства сущности концептуальной модели, значение которого используется для оценки условия.

Этот атрибут неприменим, если элемент Condition используется внутри элемента FunctionImportMapping.

Пример

В следующем примере демонстрируются элементы Condition, используемые в качестве дочерних элементов для элемента MappingFragment. Если значение HireDate отлично от NULL, а значение EnrollmentDate равно NULL, то данные сопоставляются между типом SchoolModel.Instructor и столбцами PersonID и HireDate таблицы Person. Если значение HireDate отлично от NULL, а значение EnrollmentDate равно NULL, то данные сопоставляются между типом SchoolModel.Student и столбцами PersonID и Enrollment таблицы 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>

См. также

Другие ресурсы

Спецификации языка CSDL, SSDL и MSL
Моделирование и сопоставление (платформа Entity Framework)