Condividi tramite


Procedura dettagliata: aggiunta della convalida a classi di entità

La convalida dei dati rappresenta il processo mediante cui si conferma che i valori immessi negli oggetti dati sono conformi ai vincoli presenti nello schema di un oggetto, oltre che alle regole stabilite per l'applicazione. Per ridurre gli errori e il numero potenziale di round trip tra un'applicazione e il database, è opportuno convalidare i dati prima di inviare aggiornamenti al database sottostante.

In Progettazione relazionale oggetti sono disponibili metodi parziali che consentono agli utenti di estendere il codice generato nella finestra di progettazione, che viene eseguito durante i comandi di inserimento, aggiornamento ed eliminazione di entità complete nonché durante e dopo le modifiche di singole colonne.

In questa procedura dettagliata vengono fornite istruzioni specifiche per l'aggiunta della convalida alle classi di entità LINQ to SQL [LINQ to SQL] e viene sviluppato l'argomento Procedura dettagliata: creazione di classi LINQ to SQL (Progettazione relazionale oggetti).

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

  • Aggiunta della convalida per le modifiche ai dati di una specifica colonna.

  • Aggiunta della convalida per gli aggiornamenti a un'entità completa.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre dei seguenti elementi:

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 Personalizzazione delle impostazioni di sviluppo in Visual Studio.

Apertura della soluzione ORDesignerWalkthrough

Per aprire la soluzione ORDesignerWalkthrough

Aggiunta della convalida per le modifiche al valore di una specifica colonna

In questa parte della procedura dettagliata, verrà aggiunta logica di convalida alla colonna RequiredDate di un ordine. Verrà inoltre aggiunto codice per verificare che RequiredDate corrisponda a una data precedente rispetto alla data odierna. Poiché la convalida viene eseguita nella definizione di classe effettiva anziché nell'interfaccia utente, se la convalida del valore ha esito negativo, viene generata un'eccezione.

Per convalidare i dati durante la modifica del valore di una colonna

  1. Aprire il file Northwind.dbml in O/R Designer (fare doppio clic sul file Northwind.dbml in Esplora soluzioni).

  2. Poiché si sta aggiungendo la convalida alla colonna RequiredDate di un ordine, fare clic con il pulsante destro del mouse sulla classe Order nella finestra di progettazione, quindi scegliere Visualizza codice.

    Viene aperto l'editor del codice con una classe parziale per l'ordine.

  3. Posizionare il cursore nella classe Order parziale.

  4. Per i progetti di Visual Basic:

    1. Espandere l'elenco Nome metodo (casella combinata (Dichiarazioni)).

    2. Fare clic su OnRequiredDateChanging.

    3. Viene aggiunto un metodo OnRequiredDateChanging alla classe Order parziale.

    4. Aggiungere il seguente codice all'interno del metodo OnRequiredDataChanging per assicurarsi che il valore immesso per RequiredDate non corrisponda a una data precedente rispetto alla data corrente:

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

    Per i progetti C#:

    1. Aggiungere il seguente codice alla classe Order parziale per assicurarsi che il valore immesso per RequiredDate non corrisponda a una data precedente rispetto alla data corrente:

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

Verifica dell'applicazione

Il test della logica di convalida richiede l'esecuzione dell'applicazione e l'immissione di valori che determineranno l'esito negativo della convalida.

Per eseguire il test dell'applicazione

  1. Premere F5.

  2. Nella griglia in cui vengono visualizzati gli ordini, modificare la colonna RequiredDate di un ordine in una data precedente alla data corrente e spostarsi dal record per accettare la modifica.

    Il nuovo valore determina l'esito negativo della convalida e viene generata un'eccezione, come previsto.

  3. Chiudere il form. Interrompere il debug.

Gestione dell'errore di convalida in DataGridView

Il test dell'applicazione ha generato un messaggio di errore di DataGridView che indica agli sviluppatori di gestire l'evento DataError. Nella procedura riportata di seguito viene mostrato come gestire tale evento.

Per gestire l'errore di convalida in DataGridView

  1. Aprire Form1 nell'editor del codice.

  2. Selezionare OrdersDataGridView.

  3. Creare un gestore eventi per l'evento DataError.

  4. Aggiungere codice per visualizzare l'errore. Il gestore eventi avrà il seguente aspetto:

    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);
    }
    

Aggiunta della convalida per gli aggiornamenti a una classe di entità

Oltre a controllare i valori durante le modifiche, è possibile convalidare i dati quando si tenta di aggiornare una classe di entità completa. La convalida durante un tentativo di aggiornamento consente di confrontare i valori di più colonne, se richiesto dalle regole business. Ad esempio, nella procedura riportata di seguito viene mostrato come convalidare l'uso dell'azienda di spedizione corretta se il costo di spedizione è inferiore a un limite impostato.

Per convalidare i dati durante un aggiornamento a una classe di entità

  1. Aprire il file Northwind.dbml in O/R Designer (fare doppio clic sul file Northwind.dbml in Esplora soluzioni).

  2. Poiché si sta aggiungendo la convalida all'aggiornamento di una classe Order completa, i metodi parziali a cui è necessario accedere sono situati nella classe DataContext generata (NorthwindDataContext). Fare clic con il pulsante destro del mouse su un'area vuota in Progettazione relazionale oggetti, quindi scegliere Visualizza codice.

    Viene aperto l'editor del codice nella classe parziale relativa a NorthwindDataContext.

  3. Posizionare il cursore nella classe parziale NorthwindDataset.

  4. Per i progetti di Visual Basic:

    1. Espandere l'elenco Nome metodo (casella combinata (Dichiarazioni)).

    2. Fare clic su UpdateOrder.

    3. Viene aggiunto un metodo UpdateOrder alla classe NorthwindDataContext parziale.

    4. Il recapito non viene eseguito da Federal Shipping se il valore Freight è inferiore a 10. Pertanto, aggiungere il seguente codice all'interno del metodo UpdateOrder per assicurarsi che il valore immesso per ShipVia non sia Federal Shipping se il valore Freight è inferiore a 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
      

    Per i progetti C#:

    1. Aggiungere il seguente codice alla classe NorthwindDataContext parziale per assicurarsi che il valore immesso per ShipVia non sia Federal Shipping se il valore Freight è inferiore a 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);
          }
      }
      

Verifica dell'applicazione

Per testare la logica di convalida, eseguire l'applicazione e immettere valori che determineranno l'esito negativo della convalida.

Per eseguire il test dell'applicazione

  1. Premere F5.

  2. Nella griglia in cui vengono visualizzati gli ordini, individuare un record per il quale ShipVia corrisponda a 3. Modificare Freight in 5 e spostarsi dal record per accettare la modifica.

    Poiché la convalida non viene eseguita fino a quando il record non viene effettivamente inviato per l'aggiornamento, non avrà ancora esito negativo.

  3. Fare clic sul pulsante Salva nel form.

    A questo punto la convalida ha esito negativo e viene generata l'eccezione.

  4. Chiudere il form. Interrompere il debug.

Passaggi successivi

A seconda dei requisiti dell'applicazione, è possibile eseguire diverse operazioni dopo l'aggiunta della convalida alle classi di entità LINQ to SQL. È inoltre possibile apportare il seguente miglioramento all'applicazione:

  • Creazione di altre query LINQ per ordinare e filtrare i dati. Per informazioni, vedere Query LINQ to SQL.

Vedere anche

Attività

Procedura dettagliata: creazione di classi LINQ to SQL (Progettazione relazionale oggetti)

Concetti

Query LINQ to SQL

Altre risorse

Progettazione relazionale oggetti

LINQ to SQL [LINQ to SQL]

Novità relative allo sviluppo di applicazioni dati in Visual Studio 2012

LINQ to SQL Walkthroughs