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


Свойство навигации

Свойство навигации — это необязательное свойство типа сущности, позволяющее переходить от одной частисвязи к другому концу. В отличие от других свойств, свойства навигации не несут данные.

Определение свойства навигации включает в себя следующее:

  • Имя. (Обязательно)

  • Ассоциация, которой оно управляет. (Обязательно)

  • Цели ассоциации, которой он управляет. (Обязательно)

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

Тип данных навигационного свойства определяется кратностью удаленного конца связи. Например, предположим, что существует свойство навигации 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 содержат концы ассоциации.

См. также