Propriedade Navigation
Uma propriedade de navegação é uma propriedade opcional em um tipo de entidade que permite a navegação de uma extremidade de uma associação para a outra extremidade. Ao contrário de outras propriedades, as propriedades de navegação não transportam dados.
Uma definição de propriedade de navegação inclui o seguinte:
Um nome. (Obrigatório)
A associação que navega. (Obrigatório)
Os fins da associação que navega. (Obrigatório)
As propriedades de navegação são opcionais em ambos os tipos de entidade nas extremidades de uma associação. Se você definir uma propriedade de navegação em um tipo de entidade no final de uma associação, não será necessário definir uma propriedade de navegação no tipo de entidade na outra extremidade da associação.
O tipo de dados de uma propriedade de navegação é determinado pela multiplicidade de sua extremidade de associação remota. Por exemplo, suponha que uma propriedade de navegação, OrdersNavProp
, exista em um Customer
tipo de entidade e navegue por uma associação um-para-muitos entre Customer
e Order
. Como o final de associação remota para a propriedade de navegação tem multiplicidade de muitos (*), seu tipo de dados é uma coleção (de Order
). Da mesma forma, se uma propriedade de navegação, CustomerNavProp
, existe no Order
tipo de entidade, seu tipo de dados seria Customer
, porque a multiplicidade da extremidade remota é uma (1).
Exemplo
O diagrama abaixo mostra um modelo conceitual com três tipos de entidade: Book
, Publisher
, e Author
. As propriedades Publisher
de navegação e Authors
são definidas no tipo de entidade Livro. A propriedade Books
Navigation é definida no tipo de entidade Publisher e no tipo de Author
entidade.
O ADO.NET Entity Framework usa uma linguagem específica de domínio (DSL) chamada linguagem de definição de esquema conceitual (CSDL) para definir modelos conceituais. A CSDL a seguir define o Book
tipo de entidade mostrado no diagrama acima:
<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>
Os atributos XML são usados para comunicar as informações necessárias para definir uma propriedade de navegação: O atributo Name
contém o nome da propriedade, Relationship
contém o nome da associação que ele navega e FromRole
ToRole
contém as extremidades da associação.