Compartilhar via


Configurar a herança usando o Designer Relacional de Objetos

O Designer Relacional de Objetos (Designer de O/R) dá suporte ao conceito de herança de tabela única, pois geralmente é o implementado nos sistemas relacionais. Na herança de tabela única, há uma tabela de banco de dados individual que contém campos para informações pai e filho. Com os dados relacionais, uma coluna de discriminador contém o valor que determina qual classe qualquer registro pertence.

Por exemplo, pense em uma tabela Persons que contém todos os empregados por uma empresa. Algumas pessoas são funcionários e algumas pessoas são gerentes. A tabela Persons contém uma coluna chamada EmployeeType que tenha um valor de 1 para gerentes e um valor de 2 para funcionários; esta é a coluna de discriminador. Nesse cenário, você pode criar uma subclasse de funcionários e preencher a classe com apenas os registros que têm um valor de EmployeeType de 2. Você pode também remover colunas que não se aplicam de cada uma das classes.

Criar um modelo de objeto que usar herança (e corresponde a dados relacionais) pode ser um pouco confuso. O procedimento a seguir descreve as etapas necessárias para configurar a herança com o Designer Relacional de Objetos. Seguir etapas genéricas sem se referir a uma tabela existente e colunas pode ser difícil, desse modo, é fornecido um passo a passo que usa dados. Para instruções passo a passo detalhadas para configurar a herança usando o Relational Designer, consulte passo a passo: Criando o LINQ to SQL classes por meio de herança de tabela única (O/R Designer).

Para criar classes de dados herdadas

  1. Abra o Designer Relacional de Objetos adicionando um item Classes LINQ to SQL a um projeto existente do Visual Basic ou C#.

  2. Arraste a tabela que você deseja usar como a classe base no Designer Relacional de Objetos.

  3. Arraste uma segunda cópia da tabela no Designer Relacional de Objetos e renomeie-a. Esta é a classe derivada, ou subclasse.

  4. Clique na guia Herança no Object Relational Designer da Caixa de Ferramentas e em seguida, selecione a subclasse (a tabela que você renomeou) e conecta-se a classe base.

    Observação

    Clique no item de Herança em Caixa de Ferramentas e solte o botão do mouse, clique na segunda cópia de classe que você criou na etapa 3 e depois selecione a primeira classe que você criou na etapa 2. A seta na linha de herança aponta para a primeira classe.

  5. Em cada classe, excluir todas as propriedades do objeto que você não deseja que apareça e que não são usadas para associações. Você receberá um erro se tentar excluir propriedades de objeto usadas para associações: The property <property name> cannot be deleted because it is participating in the association <association name>.

    Observação

    Como uma classe derivada herda as propriedades definidas na sua classe base, as mesmas colunas não podem ser definidas em cada classe. (As colunas são implementadas como propriedades.) Você pode habilitar a criação das colunas na classe derivada definindo o modificador de herança na propriedade na classe base. Para obter mais informações, confira Noções básicas de herança (Visual Basic).

  6. Selecione a linha de herança no Designer Relacional de Objetos.

  7. Na janela Propriedades, defina a Propriedade Discriminatória como nome da coluna que distingue os registros em suas classes.

  8. Defina a propriedade Valor Discriminatório da Classe Derivada para o valor no banco de dados que designa o registro como o tipo herdado. (Esse é o valor que é armazenado na coluna discriminatória e é usado para designar a classe herdada.)

  9. Defina a propriedade Base Class Discriminator Value como o valor que designa o registro como um tipo base. (Esse é o valor que é armazenado na coluna discriminatória e é usado para designar a classe base.)

  10. Opcionalmente, você pode também definir a propriedade de Padrão de Herança para designar um tipo em uma hierarquia de herança que é usada para carregar as linhas que não correspondem nenhum código de herança definido. Em outras palavras, se um registro tiver um valor em sua coluna discriminatória que não corresponda ao valor nas propriedades Derived Class Discriminator Value ou Base Class Discriminator Value, o registro será carregado no tipo designado como o Padrão de Herança.