сложный тип (модель EDM)

Сложный тип — это шаблон для определения сложных, структурированных свойств в типах сущностей или в других сложных типах. Каждый шаблон содержит следующие сведения.

  • Уникальное имя. (Обязательный атрибут).

    Ee382831.note(ru-ru,VS.100).gifПримечание
    Имя сложного типа не может быть таким же, что и имя типа сущности внутри одного и того же пространства имени.

  • Данные в форме одного и нескольких свойств. (Необязательно.)

    Ee382831.note(ru-ru,VS.100).gifПримечание
    Свойство сложного типа может быть другим сложным типом.

Сложный тип похож на тип сущности тем, что сложный тип может содержать полезные данные в форме свойств примитивного типа или других сложных типов. Однако между сложными типами и типами сущности существуют некоторые ключевые различия.

  • Сложные типы не имеют идентификаторов и поэтому не могут существовать независимо. Сложные типы могут существовать только как свойства типов сущностей или других сложных типов.

  • Сложные типы не могут участвовать в ассоциациях. Ни один конец ассоциации не может быть сложным типом, и поэтому свойства навигации не могут быть определены для сложных типов.

Пример

Платформа ADO.NET Entity Framework использует доменный язык DSL, называемый языком CSDL (CSDL), для определения концептуальных моделей. Далее на языке CSDL определяется сложный тип, адрес со свойствами примитивного типа StreetAddress, City, StateOrProvince, Country и PostalCode.

<ComplexType Name="Address" >
  <Property Type="String" Name="StreetAddress" Nullable="false" />
  <Property Type="String" Name="City" Nullable="false" />
  <Property Type="String" Name="StateOrProvince" Nullable="false" />
  <Property Type="String" Name="Country" Nullable="false" />
  <Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>

Чтобы определить сложный тип Address (показанный выше) как свойство типа сущности, необходимо объявить тип свойства в определении типа сущности. Далее на языке CSDL объявляется свойство Address в виде сложного типа в типе сущности (издателе).

<EntityType Name="Publisher">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" />
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="BooksModel.Address" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                          FromRole="Publisher" ToRole="Book" />
    </EntityType>

См. также

Основные понятия

Основные понятия модели EDM
модель Entity Data