Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Свойство навигации — это необязательное свойство типа сущности, позволяющее переходить от одной частисвязи к другому концу. В отличие от других свойств, свойства навигации не несут данные.
Определение свойства навигации включает в себя следующее:
Имя. (Обязательно)
Ассоциация, которой оно управляет. (Обязательно)
Цели ассоциации, которой он управляет. (Обязательно)
Свойства навигации являются необязательными в конечных точках ассоциации для обоих типов сущностей. Если вы определяете свойство навигации для одного типа сущности в конце ассоциации, вам не нужно определить свойство навигации для типа сущности в другом конце ассоциации.
Тип данных навигационного свойства определяется кратностью удаленного конца связи. Например, предположим, что существует свойство навигации OrdersNavProp
на типе сущности Customer
, которое навигирует связь "один ко многим" между Customer
и Order
. Так как конец удаленной связи для свойства навигации имеет кратность множества (*), его тип данных — это коллекция (из Order
). Аналогично, если в типе сущности CustomerNavProp
существует свойство навигации Order
, то его тип данных будет Customer
, поскольку множественность удаленного конца равна единице (1).
Пример
На схеме ниже показана концептуальная модель с тремя типами сущностей: Book
, Publisher
и Author
. Свойства навигации Publisher
и Authors
определены в типе сущности Book. Свойство Books
навигации определяется как в типе сущности Publisher, так и в типе Author
сущности.
В ADO.NET Entity Framework используется язык, зависящий от домена (DSL), называемый языком определения концептуальной схемы (CSDL) для определения концептуальных моделей. Следующий CSDL определяет тип сущности, показанный Book
на приведенной выше схеме:
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
XML-атрибуты используются для передачи информации, необходимой для определения свойства навигации: атрибут Name
содержит имя свойства, Relationship
содержит имя ассоциации, по которой оно перемещается, а FromRole
и ToRole
содержат концы ассоциации.