Compartilhar via


Propriedade de navegação

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 à outra. Ao contrário das outras propriedades, as propriedades de navegação não levam dados.

Uma definição de propriedade de navegação inclui o seguinte:

  • Um nome. (Obrigatória)

  • A associação que navega. (Obrigatória)

  • Termina de associação que navega. (Obrigatória)

As propriedades de navegação são opcionais em ambos os tipos de entidade termina de uma associação. Se você definir uma propriedade de navegação em um tipo de entidade no final de uma associação, você não precisa definir uma propriedade de navegação no tipo de entidade no outro extremo de associação.

O tipo de dados de uma propriedade de navegação é determinado por multiplicidade de extremidades da associação remotas. Por exemplo, suponha uma propriedade de navegação, OrdersNavProp, existe em um tipo de entidade de Customer e navegar em um para muitos associação entre Customer e Order. Como o fim remoto da associação para a propriedade de navegação tem a multiplicidade de muitos (*), seu tipo de dados é uma coleção (de Order). Da mesma forma, se uma propriedade de navegação, CustomerNavProp, existe no tipo de entidade de Order , seu tipo de dados deve ser Customer, porque a multiplicidade de extremidade remoto é um (1).

Exemplo

O diagrama a seguir mostra um modelo conceitual com três tipos de entidade: Book, Publisher, e Author. As propriedades de navegação, Publisher e Authors, são definidas no tipo de entidade de livro. A propriedade Books de navegação é definida no tipo de entidade do Publisher e tipo de entidade de Author .

Diagram showing a conceptual model with three entity types.

O Entity Framework do ADO.NET usa uma DSL (linguagem específica de domínio) chamada CSDL (linguagem de definição de esquema conceitual) para definir modelos conceituais. CSDL seguir define o tipo de entidade de Book mostrado no diagrama anterior:

<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 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 navega, e FromRole e ToRole contêm terminar a associação.

Confira também