Como: validar dados

Você pode aplicar regras de validação para uma entidade ou uma tabela para garantir que os dados devidamente formatados dão escritos em uma fonte de dados.Uma regra de validação é uma condição ou uma restrição com a qual os dados em seu aplicativo devem estar de acordo.Você pode adicionar uma ou mais regras de validação para uma entidade ou uma tabela em LightSwitch.Se um usuário adiciona ou modifica os dados e os eles não estão de acordo com as regras de validação, LightSwitch exibe um erro.Antes que um usuário possa comprometer os dados, o erro de validação deve ser corrigido.

A ilustração a seguir mostra uma mensagem de erro de validação.

Mensagem de erro de validação

LightSwitch inclui várias regras de validação internos.Você pode configurar essas regras e aplicá-las a uma entidade ou a uma tabela sem escrever nenhum código.Você também pode usar código para definir regras de validação personalizadas.

Este tópico contém as seções a seguir:

  • Aplicando regras de validação pré-definidas para um campo

  • Aplicando regras de validação personalizadas para um campo

  • Aplicando regras de validação personalizadas a dados em uma tela

  • Aplicando regras de validação que são executadas quando dados são salvos

link para vídeo Para uma demonstração de vídeo relacionada, consulte Como eu faço para: Escrever regras de negócio para validação e campos calculados em um aplicativo de LightSwitch?.

Aplicando regras de validação pré-definidas para um campo

LightSwitch inclui várias regras de validação internas que você pode usar sem escrever nenhum código personalizado.Você pode aplicar essas regras para os campos individuais de dados ou a qualquer tipo de atualização que os usuários fizerem a dados em uma tela.

Para aplicar uma regra de validação predefinida a um campo

  1. Em Gerenciador de Soluções, clique duas vezes na entidade ou tabela à qual você deseja aplicar regras de validação.

    A entidade ou a tabela abre no Designer de dados.

  2. Em Designer de dados, selecione o campo que você deseja validar.

  3. Na janela Propriedades, na seção Validação, defina o valor de qualquer uma das propriedades.

    Para obter informações sobre propriedades de validação, consulte Referência: Propriedades de Designer de dados.

Aplicando regras de validação personalizadas para um campo

Você pode definir regras de validação personalizadas escrevendo código.Você pode especificar quando essas regras de validação são aplicadas por LightSwitch.Por exemplo, você pode especificar que uma regra de validação em um campo é imposta imediatamente após o usuário digitar um valor.Como alternativa, você pode especificar que uma entidade ou uma tabela são avaliadas somente depois que seus campos contiverem um valor.Este modelo faz sentido quando a validade de um valor em um campo se baseia em um valor válido em outro campo na mesma entidade ou tabela.

Para aplicar uma regra de validação personalizada para um campo

  1. Em Gerenciador de Soluções, clique duas vezes na entidade ou tabela à qual você deseja aplicar regras de validação.

    A entidade ou a tabela abre no Designer de dados.

  2. Em Designer de dados, selecione o campo que você deseja validar.

  3. Na janela Propriedades, clique em Validação personalizada.

    O Editor de Códigos abre e produz um método chamado FieldName[_Validate].

  4. Adicionar código de validação para o método FieldName[_Validate].

    Para aplicar uma regra de validação imediatamente após um usuário fornecer um valor do campo, chame o parâmetro AddPropertyError método de results.

    O exemplo a seguir exibe uma mensagem de validação após usuário definir o campo ShippedDate de entidade Order em uma data que é posterior a hoje.

    Private Sub ShippedDate_Validate(results As EntityValidationResultsBuilder)
        If Me.ShippedDate > DateTime.Today Then
            results.AddPropertyError _
                ("Shipped date cannot be later than today")
        End If
    
    End Sub
    
    partial void ShippedDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.ShippedDate > DateTime.Today)
        {
            results.AddPropertyError("Shipped date cannot be later than today");
        }
    
    }
    

    Observe que você pode realçar outras propriedades para validação.Por exemplo, você pode escrever um código de validação que é executado quando um usuário modifica o código postal de um cliente.Se você passar a propriedade City como um parâmetro para o método AddPropertyError, LightSwitch realçará o campo City.O texto da mensagem de erro de validação pode solicitar que o usuário digite o nome de uma cidade que corresponda ao novo código postal.

    ObservaçãoObservação

    Por padrão, atualizações não podem ser adicionadas a uma fonte de dados até que estejam de acordo com as regras de validação.Se você deseja permitir que os usuários utilizem atualizações não-avaliadas, use o método AddPropertyResult ao invés do método AddPropertyError.Para o segundo parâmetro do método AddPropertyResult, passe ValidationSeverity.Informational ou ValidationSeverity.Warning.

    Para aplicar uma regra de validação em uma entidade ou uma tabela, por exemplo, quando um usuário altera um valor em um campo que depende de um valor válido em outro campo, chame o método AddEntityError do parâmetro results.O exemplo a seguir compara o valor do campo RequiredDate ao valor do campo OrderDate.Se a data do pedido é posterior à data exigida, este código exibe uma mensagem de erro de validação.

    Private Sub RequiredDate_Validate(results As EntityValidationResultsBuilder)
        If Me.RequiredDate < Me.OrderDate Then
            results.AddEntityError _
                ("Required data cannot be earlier than the order date")
        End If
    
    End Sub
    
    partial void RequiredDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.RequiredDate < this.OrderDate)
        {
            results.AddEntityError
                ("Required data cannot be earlier than the order date"); 
        }
    
    }
    

Aplicando regras de validação personalizadas a dados em uma tela

Você pode especificar regras de validação personalizadas que se aplicam a uma tela inteira adicionando o código personalizado para o método <nome da intidade ou tabela>[_Validate] no arquivo de código de tela.Seu código personalizado é executado quando um usuário altera qualquer dado na tela (por exemplo, adiciona ou exclui dados).Essas regras são executadas antes que os dados possam ser salvos.

Para aplicar uma regras de validação personalizada a dados em uma tela

  1. Em Gerenciador de Soluções, clique duas vezes na tela para qual você deseja especificar uma regra de validação.

  2. Na parte superior do Designer de Tela, clique em Escreva o Código.

    O Editor de Código é aberto.

  3. No menu Declarações, selecione <nome da entidade ou método>[_Validate].

    Um bloco de código chamado <nome da entidade ou tabela>[_Validate] aparece no arquivo de código.

  4. Adicione o código de validação personalizada para o método <nome de entidade ou tabela>[_Validate].

    Para aplicar uma regra de validação depois que um usuário adiciona, exclui ou atualiza uma linha de dados, chame o método AddScreenError do parâmetro results.

    O exemplo a seguir evita a exclusão de clientes localizados nos Estados Unidos.

    Private Sub Customers_Validate _
        (results As Microsoft.LightSwitch.Framework.Client.ScreenValidationResultsBuilder)
        If Me.DataWorkspace.NorthwindData.Details.HasChanges Then
            Dim changeSet As EntityChangeSet = _
                Me.DataWorkspace.NorthwindData.Details.GetChanges()
    
            Dim entity As IEntityObject
    
            For Each entity In changeSet.DeletedEntities.OfType(Of Customer)()
    
                Dim cust As Customer = CType(entity, Customer)
                If cust.Country = "USA" Then
                    entity.Details.DiscardChanges()
                    results.AddScreenResult("Unable to remove this customer." & _
                        "Cannot delete customers that are located in the USA.", _
                         ValidationSeverity.Informational)
                End If
    
            Next
        End If
    
    End Sub
    
    partial void Customers_Validate(ScreenValidationResultsBuilder results)
    {
        if (this.DataWorkspace.NorthwindData.Details.HasChanges)
        {
            EntityChangeSet changeSet =
            this.DataWorkspace.NorthwindData.Details.GetChanges();
            foreach (IEntityObject entity in changeSet.DeletedEntities.OfType<Customer>())
            {
                Customer cust = (Customer)entity;
                if (cust.Country == "USA")
                {
                    entity.Details.DiscardChanges();
                    results.AddScreenResult("Unable to remove this customer. " +
                    "Cannot delete customers that are located in the USA.",
                    ValidationSeverity.Informational);
                }
            }
        }
    
    }
    
    ObservaçãoObservação

    Por padrão, atualizações não podem ser adicionadas a uma fonte de dados até que estejam de acordo com as regras de validação.Se você deseja permitir que os usuários utilizem atualizações não-avaliadas, use o método AddScreenResult ao invés do método AddScreenError.Para o segundo parâmetro do método AddScreenResult, passe ValidationSeverity.Informational ou ValidationSeverity.Warning.

Aplicando regras de validação que são executadas quando dados são salvos

Você pode aplicar regras de validação personalizada quando um usuário salva dados ou quando seu código chama o método SaveChanges de uma fonte de dados.Esse tipo de execução de validação é executado exclusivamente na camada do servidor.

Para aplicar regras de validação que são executadas quando dados são salvos

  1. Em Gerenciador de Soluções, clique duas vezes na entidade ou tabela à qual você deseja aplicar regras de validação.

  2. Na barra de comandos do Designer de dados, clique na seta ao lado do botão Escreva código e clique em nome da entidade ou tabela[_Validate].

    O Editor de Código é aberto e gera um método chamado nome do objeto ou tabela[_Validate].

  3. Adicione o código de validação personalizada para o método nome de entidade ou tabela[_Validate].

    Chame o método AddEntityError do parâmetro results.

    O exemplo a seguir verifica o status de crédito de um cliente quando um usuário salva uma ordem de venda.Se o crédito do cliente ainda não foi aprovado pelo departamento de financiamento, um ValidationException é lançada.

    Private Sub Orders_Validate _
        (entity As Order, results As  _
         Microsoft.LightSwitch.EntitySetValidationResultsBuilder)
        If Not CustomerCreditApproval(entity.Customer) Then
            results.AddEntityError("Customer Credit has not yet been approved")
        End If
    
    End Sub
    Private Function CustomerCreditApproval(ByVal entity As Customer) As Boolean
        'Some custom code to check the customer’s credit status.
        Return True
    
    End Function
    
            partial void Orders_Validate
                (Order entity, EntitySetValidationResultsBuilder results)
            {
                if (!CustomerCreditApproval(entity.Customer))
                {
                    results.AddEntityError
                        ("Customer Credit has not yet been approved");
                }
            }
    
            private bool CustomerCreditApproval(Customer entity)
            {
                //Some custom code to check the customer's credit status.
                return true;
            }
    
    
    ObservaçãoObservação

    Por padrão, quando a exceção é lançada, uma mensagem de erro é exibida e os dados permanecem no conjunto atual de alteração.Se você desejar alterar esse comportamento, você pode manipular ValidationException no seu código.

Consulte também

Tarefas

Como: manipular eventos de dados

Como: definir campos de dados

Conceitos

Executar tarefas relacionadas a dados por meio de código

Trabalhando com objetos relacionados a dados no código

Escrever o código em LightSwitch

Outros recursos

Visão geral sobre validação de dados em aplicativos LightSwitch

Dados: Informações por trás de seu aplicativo.