Compartilhar via


Relacionamentos – EF Designer

Observação

Essa página fornece informações sobre como configurar relacionamentos em seu modelo usando o EF Designer. Para obter informações gerais sobre relacionamentos no EF e como acessar e manipular dados usando relacionamentos, consulte Relacionamentos e propriedades de navegação.

As associações definem os relacionamentos entre tipos de entidade em um modelo. Este tópico mostra como mapear associações com o Entity Framework Designer (EF Designer). A imagem a seguir mostra as janelas principais que são usadas ao trabalhar com o EF Designer.

EF Designer

Observação

Quando você cria o modelo conceitual, talvez sejam exibidos avisos sobre entidades e associações não mapeadas na Lista de Erros. Você pode ignorar esses avisos, porque depois de optar por gerar o banco de dados com base no modelo, os erros desaparecerão.

Visão geral de associações

Quando você projeta seu modelo usando o Designer EF, um arquivo .edmx representa seu modelo. No arquivo .edmx, um elemento Association define um relacionamento entre dois tipos de entidade. Uma associação deve especificar os tipos de entidade envolvidos no relacionamento e o possível número de tipos de entidade em cada extremidade do relacionamento, que é conhecida como multiplicidade. A multiplicidade de uma extremidade de associação pode ter um valor de um (1), zero ou um (0..1) ou muitos (*). Essas informações são especificadas em dois elementos End filho.

Na hora da execução, as instâncias de tipo de entidade em uma extremidade de uma associação podem ser acessadas por meio de propriedades de navegação ou chaves estrangeiras (se você optar por expor chaves estrangeiras em suas entidades). Com chaves estrangeiras expostas, o relacionamento entre as entidades é gerenciado com um elemento ReferentialConstraint (um elemento filho do elemento Association ). É recomendável que você sempre exponha chaves estrangeiras para os relacionamentos em suas entidades.

Observação

Em muitos para muitos (*:*) você não pode adicionar chaves estrangeiras às entidades. Em uma relação *:*, as informações de associação são gerenciadas com um objeto independente.

Para obter informações sobre elementos CSDL (ReferentialConstraint, Associationetc.) consulte a especificação CSDL.

Criar e excluir associações

Criar uma associação com o Designer EF atualiza o conteúdo do modelo do arquivo .edmx. Depois de criar uma associação, você deve criar os mapeamentos para a associação (discutidos posteriormente neste tópico).

Observação

Esta seção pressupõe que você já adicionou as entidades entre as quais deseja criar uma associação com o seu modelo.

Para criar uma associação

  1. Clique com o botão direito do mouse em uma área vazia da superfície de criação, aponte para Adicionar Novo e clique em Associação....

  2. Preencha as configurações da associação na caixa de diálogo Adicionar Associação.

    Add Association

    Observação

    Você pode optar por não adicionar propriedades de navegação ou propriedades de chave estrangeira às entidades no final da associação desmarcando as caixas de seleção **Propriedade de Navegação **e **Adicionar propriedades de chave estrangeira ao < nome do tipo de entidade > Entidade **. Se você adicionar apenas uma propriedade de navegação, a associação será percorrível em apenas uma direção. Se você não adicionar nenhuma propriedade de navegação, deverá optar por adicionar propriedades de chave estrangeira para acessar entidades nas extremidades da associação.

  3. Clique em OK.

Para excluir uma associação

Para excluir uma associação, siga um destes procedimentos:

  • Clique com o botão direito do mouse na associação na superfície do Designer EF e selecione Excluir.

  • OU –

  • Selecione uma ou mais associações e pressione a tecla Delete.

Incluir propriedades de chave estrangeira em suas entidades (restrições referenciais)

É recomendável que você sempre exponha chaves estrangeiras para os relacionamentos entre suas entidades. O Entity Framework usa uma restrição referencial para identificar que uma propriedade atua como a chave estrangeira para um relacionamento.

Se você marcou a caixa de seleção Adicionar propriedades de chave estrangeira ao < nome de tipo de entidade > Entidade ao criar um relacionamento, essa restrição referencial foi adicionada para você.

Quando você usa o EF Designer para adicionar ou editar uma restrição referencial, ele adiciona ou modifica um elemento ReferentialConstraint no conteúdo CSDL do arquivo .edmx.

  • Clique duas vezes na associação que você deseja editar. A caixa de diálogo Restrição Referencial é exibida.

  • Na lista suspensa Principal, selecione a entidade principal na restrição referencial. As propriedades de chave da entidade são adicionadas à lista Chave Principal na caixa de diálogo.

  • Na lista suspensa Dependente, selecione a entidade dependente na restrição referencial.

  • Para cada chave principal que tem uma chave dependente, selecione uma chave dependente correspondente nas listas suspensas na coluna Chave Dependente.

    Ref Constraint

  • Clique em OK.

Criar e editar mapeamentos de associação

Você pode especificar como uma associação é mapeada para o banco de dados na janela Detalhes de Mapeamento do EF Designer.

Observação

Você só pode mapear detalhes para as associações que não têm uma restrição referencial especificada. Se uma restrição referencial for especificada, uma propriedade de chave estrangeira será incluída na entidade e você poderá usar os Detalhes de Mapeamento da entidade para controlar para qual coluna a chave estrangeira é mapeada.

Criar um mapeamento de associação

  • Clique com o botão direito do mouse em uma associação na superfície de design e selecione Mapeamento de Tabela. Isso exibe o mapeamento de associação na janela Detalhes do Mapeamento.

  • Clique em Adicionar uma Tabela ou Exibição. Uma lista suspensa é exibida que inclui todas as tabelas no modelo de armazenamento.

  • Selecione a tabela para a qual a associação será mapeada. A janela Detalhes de Mapeamento exibe as duas extremidades da associação e as propriedades de chave para o tipo de entidade em cada Extremidade.

  • Para cada propriedade de chave, clique no campo Coluna e selecione a coluna para a qual a propriedade será mapeada.

    Mapping Details 4

Editar um mapeamento de associação

  • Clique com o botão direito do mouse em uma associação na superfície de design e selecione Mapeamento de Tabela. Isso exibe o mapeamento de associação na janela Detalhes do Mapeamento.
  • Clique em Mapear para <Nome da Tabela>. Uma lista suspensa é exibida que inclui todas as tabelas no modelo de armazenamento.
  • Selecione a tabela para a qual a associação será mapeada. A janela Detalhes de Mapeamento exibe as duas extremidades da associação e as propriedades de chave para o tipo de entidade em cada Extremidade.
  • Para cada propriedade de chave, clique no campo Coluna e selecione a coluna para a qual a propriedade será mapeada.

Editar e excluir propriedades de navegação

As propriedades de navegação são propriedades de atalho usadas para localizar as entidades nas extremidades de uma associação em um modelo. As propriedades de navegação podem ser criadas quando você cria uma associação entre dois tipos de entidade.

Para editar propriedades de navegação

  • Selecione uma propriedade de navegação na superfície do EF Designer. Informações sobre a propriedade de navegação serão exibidas na janela Propriedades do Visual Studio.
  • Altere as configurações na janela Propriedades.

Para excluir propriedades de navegação

  • Se as chaves estrangeiras não forem expostas em tipos de entidade no modelo conceitual, a exclusão de uma propriedade de navegação poderá tornar a associação correspondente percorrível apenas em uma direção ou não percorrível de forma nenhuma.
  • Clique com o botão direito do mouse em uma propriedade de navegação na superfície do EF Designer e selecione Excluir.