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 Creazione e modifica di dataset tipizzati.
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:
Soluzione e progetti associati creati in Procedura dettagliata: creazione di un'applicazione dati a più livelli.
Accedere al database di esempio Northwind. Per ulteriori informazioni, vedere Procedura: installare database di esempio.
Nota
Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni vedere Customizing Development Settings in Visual Studio.
Apertura della soluzione NTierWalkthrough
Per aprire la soluzione NTierWalkthrough
Scegliere Apri dal menu File, fare clic su Progetto/Soluzione, quindi passare al percorso del file NTierWalkthrough.sln.
Nota
Il file NTierWalkthrough.sln viene creato nell'argomento Procedura dettagliata: creazione di un'applicazione dati a più livelli e costituisce un prerequisito per il completamento di questa procedura dettagliata.Completare l'argomento Procedura dettagliata: creazione di un'applicazione dati a più livelli e al termine salvare tutti i progetti, se non sono stati ancora salvati.
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
Aprire il dataset in Creazione e modifica di dataset tipizzati facendo doppio clic sul file NorthwindDataSet.xsd del progetto DataAccessTier in Esplora soluzioni.
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.
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
Premere F5.
Nel form vengono visualizzati i dati delle tabelle Customers e Orders.
In DataGridView, che contiene gli ordini, modificare il valore della colonna OrderDate (di qualsiasi record) nella data del giorno successivo.
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.
Posizionare il puntatore del mouse sull'icona di errore per visualizzare l'errore di convalida.
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:
- Aggiunta della convalida per la verifica delle modifiche che interessano un intero record. Per informazioni, vedere Procedura: aggiungere la convalida a un dataset a più livelli.