Partilhar via


Adicionar validação a classes de entidade

Observação

Os conjuntos de dados e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. Eles são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.

Validar classes de entidade é o processo que confirma que os valores inseridos em objetos de dados estão de acordo com as restrições do esquema de um objeto e também as regras estabelecidas para o aplicativo. Validar dados antes de enviar atualizações para o base de dados subjacente é uma boa prática que reduz erros. Também reduz o número potencial de processamentos entre um aplicativo e o base de dados.

As ferramentas LINQ to SQL no Visual Studio fornecem os métodos parciais que permitem aos usuários estender o código gerado pelo designer que é executado durante inserções, atualizações e exclusões de entidades completas, e durante e após as alterações da coluna individual.

Observação

Este tópico fornece as etapas básicas para adicionar validação a classes de entidade usando o O/R Designer. Como pode ser difícil seguir essas etapas genéricas sem se referir a uma classe específica de entidade, um explicação passo a passo que usa os dados reais é fornecida.

Adicionar validação para alterações ao valor em uma coluna específica

Este procedimento mostra como validar dados quando o valor em uma coluna é alterado. Uma vez que a validação é executada na definição de classe (em vez de na interface do usuário), será lançada uma exceção se o valor causar a falha da validação. Implementar manipulação de erro para o código em seu aplicativo que tenta alterar os valores de coluna.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio neste artigo. Você pode estar usando outra edição do Visual Studio ou outras configurações de ambiente. Para obter mais informações, confira Personalizar o IDE.

Para validar dados durante o valor de uma coluna alterar

  1. Abra ou crie um novo arquivo de classes de LINQ to SQL (arquivo .dbml) no Designer Relacional de Objetos. (Clique duas vezes no arquivo .dbml no Gerenciador de Soluções.)

  2. No Designer Relacional de Objetos, clique com o botão direito do mouse na classe para qual você deseja adicionar validação e clique em Exibir Código.

    O editor de códigos abre com uma classe parcial para a classe de entidade selecionada.

  3. Coloque o cursor na classe parcial.

  4. Para projetos do Visual Basic:

    1. Expanda a lista Nome do Método.

    2. Localize o método OnCOLUMNNAMEChanging para a coluna à qual você deseja adicionar validação.

    3. Um método OnCOLUMNNAMEChanging é adicionado à classe parcial.

    4. Adicione o seguinte código para primeiro verificar que um valor está inserido e para garantir em que o valor inserido para a coluna é aceitável para seu aplicativo. O argumento de value contém o valor proposto, para adicionar a lógica para confirmar que é um valor válido:

      If value.HasValue Then
          ' Add code to ensure that the value is acceptable.
          ' If value < 1 Then
          '    Throw New Exception("Invalid data!")
          ' End If
      End If
      

    Para projetos C#:

    Como os projetos C# não geram automaticamente os manipuladores de eventos, você pode usar o IntelliSense para criar métodos parciais de alteração de colunas. Tipo partial e um espaço para acessar a lista de métodos parciais disponíveis. Clique no método de alteração para a coluna que você deseja adicionar validação para. O seguinte código lembra o código que é gerado quando você seleciona um método parcial de alteração de colunas:

    partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value)
        {
           throw new System.NotImplementedException();
        }
    

Adicionar validação para atualizações a uma classe de entidade

Além de verificar valores alterações pendentes, você também pode validar dados quando é feita uma tentativa de atualizar uma classe completa de entidade. A validação durante uma atualização tentada permite que você comparar valores em várias colunas se as regras comerciais exigem esta. O procedimento a seguir mostra como validar quando é feita uma tentativa de atualizar uma classe completa de entidade.

Observação

O código de validação para que as atualizações terminem classes de entidade é executado na classe parcial de DataContext (em vez de na classe parcial de uma classe específica de entidade).

Para validar dados durante uma atualização para uma entidade

  1. Abra ou crie um novo arquivo de classes de LINQ to SQL (arquivo .dbml) no Designer Relacional de Objetos. (Clique duas vezes no arquivo .dbml no Gerenciador de Soluções.)

  2. Clique com o botão direito do mouse em uma área vazia no Designer Relacional de Objetos e clique em Exibir Código.

    O editor de códigos abre com uma classe parcial para DataContext.

  3. Coloque o cursor na classe parcial para DataContext.

  4. Para projetos do Visual Basic:

    1. Expanda a lista Nome do Método.

    2. Clique em UpdateENTITYCLASSNAME.

    3. Um método UpdateENTITYCLASSNAME é adicionado à classe parcial.

    4. Acessar valores de colunas individuais usando o argumento de instance , conforme mostrado no código o seguir:

      If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then
          Dim ErrorMessage As String = "Invalid data!"
          Throw New Exception(ErrorMessage)
      End If
      

    Para projetos C#:

    Como os projetos C# não geram automaticamente os manipuladores de eventos, você pode usar o IntelliSense para criar o método UpdateCLASSNAME parcial. Tipo partial e um espaço para acessar a lista de métodos parciais disponíveis. Clique no método de atualização para a classe no qual você deseja adicionar validação. O seguinte código lembra o código gerado quando você seleciona um método parcial UpdateCLASSNAME:

    partial void UpdateCLASSNAME(CLASSNAME instance)
    {
        if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y))
        {
            string ErrorMessage = "Invalid data!";
            throw new System.Exception(ErrorMessage);
        }
    }