свойство навигации (модель EDM)
Свойство навигации является необязательным свойством типа сущности, которое позволяет переходить от одной конечной точки ассоциации к другой конечной точке. В отличие от свойств, свойства навигации не содержат данных.
Определение свойства навигации содержит следующую информацию.
Имя. (Обязательный атрибут).
Ассоциация, для которой осуществляется переход. (Обязательный атрибут).
Конечные точки ассоциации, для которой осуществляется переход. (Обязательный атрибут).
Обратите внимание, что свойства навигации являются необязательными для обоих типов сущностей, расположенных в конечных элементах ассоциации. Если свойство навигации было определено для типа сущности на одном конечном элементе ассоциации, то определять его для типа сущности на другом конечном элементе необязательно.
Тип данных свойства навигации определяется кратностью его удаленной конечной точки ассоциации. Например, предположим, что свойство навигации 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), для определения концептуальных моделей. Ниже на языке 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 содержат конечные точки ассоциации.