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


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

Элемент ComplexProperty в языке MSL задает сопоставление между свойством сложного типа в типе сущности концептуальной модели и столбцами таблицы в основной базе данных. Сопоставления столбца свойств указаны в дочерних элементах ScalarProperty.

Свойство элемента ComplexType может иметь следующие дочерние элементы:

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

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

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

Name

Да

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

TypeName

Нет

Полное имя пространства имен типа свойства концептуальной модели.

Пример

Следующий пример основан на модели School. К концептуальной модели добавлен следующий сложный тип.

<ComplexType Name="FullName">
  <Property Type="String" Name="LastName" 
            Nullable="false" MaxLength="50" 
            FixedLength="false" Unicode="true" />
  <Property Type="String" Name="FirstName" 
            Nullable="false" MaxLength="50" 
            FixedLength="false" Unicode="true" />
</ComplexType>

Свойства LastName и FirstName типа сущности Person были заменены одним сложным свойством Name:

<EntityType Name="Person">
  <Key>
    <PropertyRef Name="PersonID" />
  </Key>
  <Property Name="PersonID" Type="Int32" Nullable="false" 
            annotation:StoreGeneratedPattern="Identity" />
  <Property Name="HireDate" Type="DateTime" />
  <Property Name="EnrollmentDate" Type="DateTime" />
  <Property Name="Name" Type="SchoolModel.FullName" Nullable="false" />
</EntityType>

В следующей спецификации MSL показан элемент ComplexProperty, который служит для сопоставления свойства Name со столбцами в основной базе данных.

<EntitySetMapping Name="People">
  <EntityTypeMapping TypeName="SchoolModel.Person">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="HireDate" ColumnName="HireDate" />
      <ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
      <ComplexProperty Name="Name" TypeName="SchoolModel.FullName">
        <ScalarProperty Name="FirstName" ColumnName="FirstName" />
        <ScalarProperty Name="LastName" ColumnName="LastName" />  
      </ComplexProperty>
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

См. также

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

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