Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Сложный тип — это шаблон для определения богатых структурированных свойств типов сущностей или других сложных типов. Каждый шаблон содержит следующее:
Уникальное имя. (Обязательно)
Замечание
Имя сложного типа не может совпадать с именем типа сущности в том же пространстве имен.
Данные в виде одного или нескольких свойств. (Необязательно.)
Замечание
Свойство сложного типа может быть другим сложным типом.
Сложный тип аналогичен типу сущности в том, что сложный тип может содержать полезные данные в виде свойств примитивного типа или других сложных типов. Однако существует ряд ключевых различий между сложными типами и типами сущностей:
Сложные типы не имеют идентичностей и поэтому не могут существовать отдельно. Сложные типы могут существовать только как свойства для типов сущностей или других сложных типов.
Сложные типы не могут участвовать в сопоставлениях. Ни конец ассоциации не может быть сложным типом, поэтому свойства навигации не могут быть определены для сложных типов.
Пример
В ADO.NET Entity Framework используется язык, зависящий от домена (DSL), называемый языком определения концептуальной схемы (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 свойство как сложный тип для типа сущности (Publisher):
<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>