Compartilhar via


Como: Adicionar validação para um DataSet N-tier

Adicionar validação a um dataset que é separado em uma solução de n-camadas é basicamente igual a adicionar validação para um único arquivo DataSet (um DataSet em um projeto único).O momento sugerido para executar a validação nos dados é durante os eventos ColumnChanging e / ou RowChanging de uma tabela de dados.

O Dataset Designer fornece a funcionalidade para criar classes parciais para as quais você pode adicionar código de usuário para coluna e linha alterando eventos das tabelas de dados no dataset.Para obter mais informações sobre como adicionar código para um conjunto de dados em uma solução de n-camadas, consulte Como: Adicionar código para os conjuntos de dados em aplicativos de N-tier e Como: Adicionar código ao TableAdapters em N-tier aplicativos.Para obter mais informações sobre classes parciais, consulte Como: Dividir uma classe em classes Parcial ou Parcial classes e métodos (Guia de programação C#).

Observação:

Quando Você separado conjuntos de dados de TableAdapters (definindo a DataSet Projectpropriedade ), classes parcial do dataset existente no projeto não serão movidas automaticamente.Classes parciais DataSet existente devem ser movidas manualmente para o projeto DataSet.

Observação:

O Designer de Conjunto de Dados de Conjunto de Dados não ocorra automaticamente criar manipulador de eventos s em translation from VPE for Csharp para o ColumnChanging e RowChanging eventos. Você precisa criar um manipulador de eventos manualmente e conectar o manipulador de eventos ao evento subjacente.Os procedimentos a seguir fornecem as etapas para criar os manipuladores de eventos necessários em C# e em Visual Basic.

Validando alterações para colunas individuais

Valide valores em colunas individuais manipulando o evento ColumnChanging.O evento ColumnChanging é gerado quando o valor em uma coluna é modificado.Crie um manipulador de eventos para o evento ColumnChanging clicando duas vezes na coluna desejada no Dataset Designer.

Na primeira vez que você clicar duas vezes em uma coluna, o designer gera um manipulador de eventos para o evento ColumnChanging.Além do evento ColumnChanging, uma instrução If…Then também é criada que testa a coluna específica.Por exemplo, o código a seguir é gerado quando a coluna DataDeEntrega na tabela Pedidos do Northwind é clicada duas vezes:

Private Sub OrdersDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles Me.ColumnChanging
    If (e.Column.ColumnName = Me.RequiredDateColumn.ColumnName) Then
        ' Add validation code here.
    End If
End Sub
Observação:

Em projetos translation from VPE for Csharp, t Ele Designer de Conjunto de Dados de Conjunto de Dados cria apenas classes parcial para as tabelas individuais e o dataset no dataset.O Designer de Conjunto de Dados de Conjunto de Dados não cria automaticamente o manipulador de eventos s para o ColumnChanging e RowChanging eventos no translation from VPE for Csharp como é feito no Visual Basic. Em projetos C#, você precisa construir manualmente um método para manipular o evento e conectar o método ao evento subjacente.Os procedimentos a seguir fornecem as etapas para criar os manipuladores de eventos necessários em C# e em Visual Basic.

Observação:

Seu computador pode mostrar diferentes nomes ou localizações 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 Configurações do Visual Studio.

Para adicionar validação durante alterações em valores de colunas individuais

  1. Abra o conjunto de dados em Dataset Designer clicando duas vezes no arquivo .xsd no Explorer solução.Para obter mais informações, consulte Como: Abra um Dataset no Designer de Conjunto de Dados de Conjunto de Dados.

  2. Clique duas vezes na coluna que você deseja validar.Essa ação cria o manipulador de eventos ColumnChanging.

    Observação:

    O Dataset Designer não cria automaticamente um manipulador para o evento de C#.O código necessário manipular o evento em translation from VPE for Csharp está incluído abaixo.SampleColumnChangingEvent é criado e, em seguida, conectado até o ColumnChanging evento na EndInit método.

  3. Adicione código para verificar que e.ProposedValue contém dados que atendem aos requisitos de seu aplicativo.Se o valor proposto é inaceitável, configure a coluna para indicar que ele contém um erro.

    O exemplo de código a seguir valida que a coluna Quantity contém mais do que 0.Se a quantidade for menor ou igual a 0, a coluna é definida como um erro.The Else cláusula limpa o erro se a quantidade for maior que 0. O código no manipulador de evento Alterar coluna deve ser semelhante ao seguinte:

    If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then
        If CType(e.ProposedValue, Short) <= 0 Then
            e.Row.SetColumnError(e.Column, "Quantity must be greater than 0")
        Else
            e.Row.SetColumnError(e.Column, "")
        End If
    End If
    
    // C#
    // Add this code to the DataTable 
    // partial class.
    
        public override void EndInit()
        {
            base.EndInit();
            // Hook up the ColumnChanging event
            // to call the SampleColumnChangingEvent method.
            ColumnChanging += SampleColumnChangingEvent;
        }
    
        public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
        {
            if (e.Column.ColumnName == QuantityColumn.ColumnName)
            {
                if ((short)e.ProposedValue <= 0)
                {
                    e.Row.SetColumnError("Quantity", "Quantity must be greater than 0");
                }
                else
                {
                    e.Row.SetColumnError("Quantity", "");
                }
            }
        }
    

Validando alterações em linhas inteiras

Valide valores em todas as linhas manipulando o evento RowChanging.O evento RowChanging é gerado quando os valores em todas as colunas são confirmados.É necessário validar no evento RowChanging quando o valor em uma coluna depende do valor em outra coluna.Por exemplo, considere DataDoPedido e DataDeEntrega na tabela Pedidos no Northwind.Quando pedidos estão sendo inseridos, a validação certifica que um pedido não é inserido quando a DataDeEntrega é igual ou anterior à DataDoPedido.Neste exemplo, os valores de ambas as colunas DataDeEntrega e DataDoPedido precisam ser comparados, para que a validação da alteração de uma coluna individual não faça sentido.

Crie um manipulador de eventos para o evento RowChanging clicando duas vezes no nome da tabela na barra de título da tabela no Dataset Designer.

Para adicionar validação durante alterações em linhas inteiras

  1. Abra o conjunto de dados em Dataset Designer clicando duas vezes no arquivo .xsd no Explorer solução.Para obter mais informações, consulte Como: Abra um Dataset no Designer de Conjunto de Dados de Conjunto de Dados.

  2. Clique duas vezes na barra de título da tabela de dados no designer.

    Uma classe parcial é criada com um manipulador de eventos RowChanging e abre no Editor de Código.

    Observação:

    O Designer de Conjunto de Dados de Conjunto de Dados não ocorra automaticamente criar um manipulador de eventos para o RowChanging evento translation from VPE for Csharp projetos. Você precisa criar um método para manipular o evento RowChanging e executar o código para ligar o evento no método de inicialização da tabela.

  3. Adicione um código de usuário dentro da declaração de classe parcial.

  4. O código a seguir mostra onde adicionar código de usuário para validar durante o evento RowChanging para Visual Basic:

    Partial Class OrdersDataTable
        Private Sub OrdersDataTable_OrdersRowChanging(ByVal sender As System.Object, ByVal e As OrdersRowChangeEvent) Handles Me.OrdersRowChanging
            ' Add logic to validate columns here.
            If e.Row.RequiredDate <= e.Row.OrderDate Then
                ' Set the RowError if validation fails.
                e.Row.RowError = "Required Date cannot be on or before the OrderDate"
            Else
                ' Clear the RowError when validation passes.
                e.Row.RowError = ""
            End If
        End Sub
    End Class
    
  5. O código a seguir mostra como criar o manipulador de eventos RowChanging e onde adicionar código de usuário para validar durante o evento RowChanging para C#:

    partial class OrdersDataTable
    {
        public override void EndInit()
        {
            base.EndInit();
            // Hook up the event to the
            // RowChangingEvent method.
            OrdersRowChanging += RowChangingEvent;
        }
    
        public void RowChangingEvent(object sender, OrdersRowChangeEvent e)
        {
            // Perfom the validation logic.
            if (e.Row.RequiredDate <= e.Row.OrderDate)
            {
                // Set the row to an error when validation fails.
                e.Row.RowError = "Required Date cannot be on or before the OrderDate";
            }
            else
            {
                // Clear the RowError if validation passes.
                e.Row.RowError = "";
            }
        }
    }
    

Consulte também

Tarefas

Demonstra Passo a passo: Criando um aplicativo de dados N-tier

Conceitos

O que Há de Novo em Dados

Criando aplicativos de dados usando Visual Studio

Visão geral de aplicativo de dados de N camadas

Visão geral sobre validação de dados