Condividi tramite


Procedura dettagliata: aggiunta della convalida a un'applicazione dati a più livelli

La convalida dei dati rappresenta il processo mediante cui si conferma che i valori immessi negli oggetti dati (ad esempio, le classi DataTables o LINQ to SQL) sono conformi ai vincoli presenti nello schema di un oggetto. La convalida assicura anche la conformità alle regole stabilite per l'applicazione. Per ridurre gli errori, è opportuno convalidare i dati prima di inviare aggiornamenti al database sottostante. La convalida consente anche di ridurre il numero potenziale di round trip tra un'applicazione e il database.

In questa procedura dettagliata vengono fornite istruzioni specifiche per l'aggiunta della convalida a un'applicazione a più livelli (soluzione creata nell'argomento Procedura dettagliata: creazione di un'applicazione dati a più livelli).

In questa procedura dettagliata viene illustrato come completare le seguenti attività:

  • Generazione automatica di classi parziali utilizzando Progettazione DataSet.

  • Aggiunta di codice per eseguire la convalida quando viene modificato il valore di una singola colonna.

Prerequisiti

Per completare questa procedura dettagliata, è necessario quanto elencato di seguito:

Nota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Apertura della soluzione NTierWalkthrough

Per aprire la soluzione NTierWalkthrough

Aggiunta della convalida per controllare i dati durante la modifica di una singola colonna

In questa procedura verrà aggiunta la convalida per verificare che la colonna OrderDate di un nuovo ordine sia impostata su un valore corrispondente alla data corrente o a una precedente. Come requisito di questa applicazione, nella colonna OrderDate non può essere specificata una data successiva a quella corrente: gli ordini futuri non sono consentiti.

Per aggiungere la convalida per verificare il valore immesso nella colonna OrderDate

  1. Aprire il dataset in Progettazione DataSet facendo doppio clic sul file NorthwindDataSet.xsd del progetto DataAccessTier in Esplora soluzioni.

  2. Fare doppio clic sulla colonna OrderDate della tabella Orders nella finestra di progettazione. Attraverso questa azione viene creato il gestore eventi ColumnChanging.

    Nota

    Progettazione DataSet non crea automaticamente un gestore eventi per l'evento C#. Il codice richiesto per gestire l'evento in C# verrà incluso in questa procedura in un secondo momento. Viene creato l'oggetto SampleColumnChangingEvent viene creato, quindi sottoscrive l'evento ColumnChanging nel metodo EndInit.

  3. Aggiungere codice per verificare che e.ProposedValue per la colonna OrderDate contenga la data corrente o una precedente. Se il valore proposto non è valido, impostare la colonna in modo da indicare che contiene un errore.

    Nell'esempio di codice riportato di seguito viene convalidata la presenza nella colonna OrderDate della data corrente o di una data precedente. Se il valore OrderDate è rappresentato da una data successiva a quella corrente, la colonna OrderDate viene impostata su un errore. La clausola Else cancella l'errore se OrderDate è rappresentato dalla data corrente o da una precedente.

    Incollare il codice Visual Basic nel gestore dell'evento ColumnChanging. Incollare il codice C# nella dichiarazione della classe parziale OrdersDataTable.

    If (e.Column.ColumnName = Me.OrderDateColumn.ColumnName) Then
        If CType(e.ProposedValue, DateTime) > Today Then
            e.Row.SetColumnError(e.Column, "OrderDate cannot be in the future")
        Else
            e.Row.SetColumnError(e.Column, "")
        End If
    End If
    
    // Replace the NorthwindDataSet partial class with the following:
    public partial class NorthwindDataSet
    {
        partial class OrdersDataTable
        {
            public override void EndInit()
            {
                base.EndInit();
                // Configure the ColumnChanging event
                // to call the SampleColumnChangingEvent method.
                ColumnChanging += SampleColumnChangingEvent;
            }
    
            public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
            {
                if (e.Column.ColumnName == OrderDateColumn.ColumnName)
                {
                    if ((System.DateTime)e.ProposedValue > System.DateTime.Today)
                    {
                        e.Row.SetColumnError("OrderDate", " OrderDate cannot be in the future");
                    }
                    else
                    {
                        e.Row.SetColumnError("OrderDate", "");
                    }
                }
    
            }
        }
    }
    

Verifica dell'applicazione

Per testare l'applicazione, modificare il valore della colonna OrderDate in una data non valida.

Per eseguire il test dell'applicazione

  1. Premere F5.

  2. Nel form vengono visualizzati i dati delle tabelle Customers e Orders.

  3. In DataGridView, che contiene gli ordini, modificare il valore della colonna OrderDate (di qualsiasi record) nella data del giorno successivo.

  4. Spostarsi dalla riga per accettare la modifica.

    La convalida ha esito negativo e viene visualizzata un'icona di errore nella cella di OrderDate contenente il valore non valido.

  5. Posizionare il puntatore del mouse sull'icona di errore per visualizzare l'errore di convalida.

  6. Chiudere il form.

Passaggi successivi

A seconda dei requisiti dell'applicazione, è possibile eseguire diverse operazioni dopo l'aggiunta della convalida a un'applicazione a più livelli. Ad esempio, è possibile apportare il seguente miglioramento all'applicazione:

Vedere anche

Concetti

Novità dello sviluppo di applicazioni di dati

Altre risorse

Utilizzo dei dataset nelle applicazioni a più livelli

Aggiornamento gerarchico

Accesso ai dati in Visual Studio