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

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

Определение свойства навигации содержит следующую информацию.

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

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

  • Конечные точки ассоциации, для которой осуществляется переход. (обязательно)

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

Тип данных свойства навигации определяется кратностью его конца удаленной связи. Например, предположим, что свойство навигации OrdersNavProp существует для типа сущности Customer и осуществляет навигацию по ассоциации «один ко многим» между Customer и Order. Так как конец удаленной связи для свойства навигации имеет кратность множества (*), его тип данных — это коллекция (из Order). Аналогично, если свойство навигации CustomerNavProp существует для типа сущности Order, то его тип данных будет Customer, поскольку кратность удаленного конечного элемента - «один» (1).

Пример

На приведенной ниже схеме показана концептуальная модель с тремя типами сущностей: Book, Publisher и Author. Свойства Publisher навигации и Authors определены в типе сущности Book. Свойство навигации Books определено как относительно типа сущности «Publisher», так и относительно типа сущности Author.

Diagram showing a conceptual model with three entity types.

В 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 содержит имя связи, который он перемещается, и FromRoleToRole содержит концы ассоциации.

См. также