Passo a passo: Adicionando a validação às classes de entidade

Validar dados é 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, além das regras estabelecidas para seu aplicativo. Validar dados antes de enviar atualizações para o base de dados subjacente é uma boa prática que reduz erros e o número potencial de processamentos entre um aplicativo e o base de dados.

Designer Relacional de Objetos fornece os métodos parciais que permitem aos usuários para estender o código gerado por que executa durante, inserções, atualizações e exclusões de entidades completos, e também durante e após a coluna individual é alterada.

Essa explicação fornece instruções passo a passo para adicionar validação para a entidade de LINQ to SQL [wd_LINQSQL] classe e expande sobre o tópico de Passo a passo: criando classes LINQ to SQL (Designer Relacional de Objetos) .

Nessa explicação passo a passo, você aprenderá a executar as seguintes tarefas:

  • Adicionar validação para alterações aos dados em uma coluna específica.

  • Adicionar validação para atualizações a uma entidade completo.

Pré-requisitos

Para concluir esta explicação passo a passo, você precisará do seguinte:

Dica

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Customizing Development Settings in Visual Studio.

Abrir a solução de ORDesignerWalkthrough

Para abrir a solução de ORDesignerWalkthrough

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

Nesta parte da explicação, você adicionará lógica de validação à coluna datadeentrega de um pedido. Você adicionará código para verificar que o Datadeentrega é anterior do dia atual. Porque a validação é executada na definição de classe real (em vez de na interface do usuário) será lançada uma exceção se o valor a validação falha.

Para validar dados durante o valor de uma coluna alterar

  1. Abra o arquivo de Northwind.dbml em Designer Relacional de Objetos. (Clique duas vezes no arquivo Northwind.dbml no Gerenciador de Soluções.)

  2. Como você está adicionando validação a Entrega de um pedido, clique com o botão direito do mouse na classe de ordem no designer e clique Exibir Código.

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

  3. Coloque o cursor na classe parcial do pedido.

  4. Para projetos do Visual Basic:

    1. Expanda a lista de Nome do Método (a caixa de combinação com (Declarações)).

    2. Clique OnRequiredDateChanging.

    3. Um método de OnRequiredDateChanging é adicionado à classe parcial do pedido.

    4. Adicione o seguinte código no método de OnRequiredDataChanging para garantir que o valor inserido para o Datadeentrega não é anterior à data atual:

      If value.HasValue Then
          If value < Today Then
              Throw New Exception("Required Date cannot be in the past")
          End If
      End If
      

    Para projetos C#:

    1. Adicione o seguinte código à classe parcial do pedido para garantir que o valor inserido para o Datadeentrega não é anterior à data atual:

      partial void OnRequiredDateChanging(System.DateTime? value)
      {
          if (value < System.DateTime.Today)
          {
              throw new System.Exception("Required Date cannot be in the past");
          }
      }
      

Testando o aplicativo

Testar validação lógica requer executar o aplicativo e inserir os valores que fará com que a validação falhar.

Para testar o aplicativo

  1. Pressione F5.

  2. Na grade que exibe os pedidos, altere Entrega de um pedido a uma data antes da data atual e navegar informal para aceitar a alteração.

    O novo valor faz com que a validação falhar, e a exceção é lançada como esperado.

  3. Feche o formulário. (Pare a depuração.)

Ao manipular o erro de validação no DataGridView

Testar o aplicativo resultou em uma mensagem de erro do DataGridView que instrui desenvolvedores para manipular o evento de DataError . O procedimento a seguir mostra como manipular esse evento.

Para manipular o erro de validação no DataGridView

  1. Abra o Form1 no Editor de Códigos.

  2. OrdersDataGridView.

  3. Crie um manipulador de eventos para o evento DataError.

  4. Adicione código para exibir o erro. O manipulador de eventos parece com o seguinte:

    Private Sub OrdersDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles OrdersDataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub
    
    private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
    {
        MessageBox.Show(e.Exception.Message);
    }
    

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

Além de verificar valores durante alterações, você pode validar dados quando é feita uma tentativa de atualizar uma classe completa de entidade. A validação durante uma atualização tentada permite a comparação de valores em várias colunas se as regras comerciais exigem esta. Por exemplo, o procedimento a seguir mostra como validar que o transitário correto é usado se o frete é menor que um limite definido.

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

  1. Abra o arquivo de Northwind.dbml em Designer Relacional de Objetos. (Clique duas vezes no arquivo Northwind.dbml no Gerenciador de Soluções.)

  2. Como você está adicionando validação à atualização de uma classe de ordem completo, os métodos parciais que você precise acessar estão localizados na classe gerada de DataContext (NorthwindDataContext.) Clique com o botão direito do mouse em uma área vazia em object relational Designer de Objetos e clique Exibir Código.

    O editor de códigos abre na classe parcial para o NorthwindDataContext.

  3. Coloque o cursor na classe parcial NorthwindDataset.

  4. Para projetos do Visual Basic:

    1. Expanda a lista de Nome do Método (a caixa de combinação com (Declarações)).

    2. Clique UpdateOrder.

    3. Um método de UpdateOrder é adicionado à classe parcial de NorthwindDataContext.

    4. Enviar o federal não transmite se o valor de Carga é menor que 10. Portanto, adicione o seguinte código no método UpdateOrder para garantir que o valor inserido para ShipVia não é Enviar federal se o valor de Carga é menor que 10:

      If (instance.ShipVia = 3) And (instance.Freight < 10) Then
          Dim ErrorMessage As String = "Federal Shipping " & _
           "does not deliver for less than 10. " & _
           "You must use a different shipper."
          Throw New Exception(ErrorMessage)
      End If
      

    Para projetos C#:

    1. Adicione o seguinte código à classe parcial de NorthwindDataContext para garantir que o valor inserido para ShipVia não é Enviar federal se o valor de Carga é menor que 10:

      partial void UpdateOrder(Order instance)
      {
          if ((instance.ShipVia == 3) && (instance.Freight < 10))
          {
              string ErrorMessage = "Federal Shipping " +
                  "does not deliver for less than 10. " +
                  "You must use a different shipper.";
              throw new System.Exception(ErrorMessage);
          }
      }
      

Testando o aplicativo

Para testar a lógica de validação, execute o aplicativo e insira valores que fará com que a validação falhar.

Para testar o aplicativo

  1. Pressione F5.

  2. Na grade que exibe os pedidos, localize um registro para que ShipVia é 3. Alterar Carga a 5 e navegar informal para aceitar a alteração.

    Como validação não é executada até que o registro é enviado a verdade para atualização, a validação ainda não falhar.

  3. Clique no botão de Salvar no formulário.

    Neste ponto a validação falha e a exceção é lançada.

  4. Feche o formulário. (Pare a depuração.)

Próximas etapas

Dependendo dos requisitos de aplicativo, há várias etapas que você pode querer fazer depois de adicionar validação a classes de entidade de LINQ to SQL . Você pode fazer o seguinte aperfeiçoamento para este aplicativo:

  • Crie mais consultas LINQ para classificação e filtrar os dados. Para obter informações, consulte LINQ em consultas SQL.

Consulte também

Tarefas

Passo a passo: criando classes LINQ to SQL (Designer Relacional de Objetos)

Conceitos

LINQ em consultas SQL

Outros recursos

Designer Relacional de Objetos

LINQ to SQL [wd_LINQSQL]

Novidades para desenvolvimento de aplicativos de dados no Visual Studio 2012

LINQ to SQL Walkthroughs