Condividi tramite


Aggiungere la convalida a classi di entità

Nota

I set di dati e le classi correlate sono tecnologie .NET Framework legacy dei primi anni '2000 che consentono alle applicazioni di lavorare con i dati in memoria mentre le applicazioni vengono disconnesse dal database. Le tecnologie sono particolarmente utili per le applicazioni che consentono agli utenti di modificare i dati e rendere persistenti le modifiche apportate al database. Anche se i set di dati hanno dimostrato di essere una tecnologia molto efficace, è consigliabile che le nuove applicazioni .NET usino Entity Framework Core. Entity Framework offre un modo più naturale per usare i dati tabulari come modelli a oggetti e ha un'interfaccia di programmazione più semplice.

La convalida delle classi di entità rappresenta il processo mediante cui si conferma che i valori immessi negli oggetti dati sono conformi ai vincoli presenti nello schema di un oggetto e 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.

Gli strumenti LINQ to SQL in Visual Studio forniscono metodi parziali che consentono agli utenti di estendere il codice generato dalla finestra di progettazione eseguito durante inserimenti, aggiornamenti ed eliminazioni di entità complete e anche durante e dopo le modifiche alle singole colonne.

Nota

In questo argomento vengono illustrati i passaggi di base per l'aggiunta della convalida alle classi di entità tramite Progettazione O/R. Poiché potrebbe essere difficile seguire questi passaggi generici senza fare riferimento a una classe di entità specifica, viene fornita una procedura dettagliata che usa i dati effettivi.

Aggiungere la convalida per le modifiche apportate al valore in una colonna specifica

In questa procedura viene mostrato come convalidare i dati quando viene modificato il valore in una colonna. Dato che la convalida viene eseguita nella definizione di classe anziché nell'interfaccia utente, se il valore causa l'esito negativo della convalida, viene generata un'eccezione. Implementare la gestione degli errori per il codice nell'applicazione che tenta di modificare i valori della colonna.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio in questo articolo potrebbero essere diversi nel computer in uso. È possibile usare un'edizione diversa di Visual Studio o impostazioni di ambiente diverse. Per altre informazioni, vedere Personalizzare l'IDE.

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

  1. Aprire o creare un nuovo file LINQ to SQL Classes (.dbml file) in Progettazione O/R. Fare doppio clic sul .dbml file in Esplora soluzioni.

  2. In Progettazione O/R fare clic con il pulsante destro del mouse sulla classe per cui si vuole aggiungere la convalida e quindi scegliere Visualizza codice.

    Viene aperto l'editor del codice con una classe parziale per la classe di entità selezionata.

  3. Posizionare il cursore nella classe parziale.

  4. Per i progetti di Visual Basic:

    1. Espandere l'elenco Nome metodo.

    2. Individuare il metodo OnNOMECOLONNAChanging per la colonna a cui si vuole aggiungere la convalida.

    3. Viene aggiunto un metodo OnCOLUMNNAMEChanging alla classe parziale.

    4. Aggiungere il codice riportato di seguito per verificare innanzitutto che sia stato immesso un valore e quindi per assicurarsi che il valore immesso per la colonna sia accettabile per l'applicazione. Poiché l'argomento value contiene il valore proposto, aggiungere logica per confermare che si tratta di un valore valido:

      If value.HasValue Then
          ' Add code to ensure that the value is acceptable.
          ' If value < 1 Then
          '    Throw New Exception("Invalid data!")
          ' End If
      End If
      

    Per i progetti C#:

    Poiché i progetti C# non generano automaticamente gestori eventi, è possibile usare IntelliSense per creare i metodi parziali che modificano le colonne. Digitare partial e uno spazio per accedere all'elenco dei metodi parziali disponibili. Fare clic sul metodo di modifica delle colonne relativo alla colonna per cui si desidera aggiungere la convalida. Il codice seguente è simile al codice generato quando si seleziona un metodo parziale che cambia colonna:

    partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value)
        {
           throw new System.NotImplementedException();
        }
    

Aggiungere la convalida per gli aggiornamenti a una classe di entità

Oltre a controllare i valori durante le modifiche, è anche 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. Nella procedura riportata di seguito viene mostrato come eseguire la convalida quando si tenta di aggiornare una classe di entità completa.

Nota

Il codice di convalida per gli aggiornamenti alle classi di entità complete viene eseguito nella classe DataContext parziale, anziché nella classe parziale di una classe di entità specifica.

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

  1. Aprire o creare un nuovo file LINQ to SQL Classes (.dbml file) in Progettazione O/R. Fare doppio clic sul .dbml file in Esplora soluzioni.

  2. Fare clic con il pulsante destro del mouse su un'area vuota in Object Relational Designer e quindi scegliere Visualizza codice.

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

  3. Posizionare il cursore nella classe parziale per DataContext.

  4. Per i progetti di Visual Basic:

    1. Espandere l'elenco Nome metodo.

    2. Fare clic su UpdateNOMECLASSEDIENTITÀ.

    3. Viene aggiunto un metodo UpdateENTITYCLASSNAME alla classe parziale.

    4. Accedere ai valori delle singole colonne usando l'argomento instance, come mostrato nel codice seguente:

      If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then
          Dim ErrorMessage As String = "Invalid data!"
          Throw New Exception(ErrorMessage)
      End If
      

    Per i progetti C#:

    Poiché i progetti C# non generano automaticamente gestori eventi, è possibile usare IntelliSense per creare il metodo parziale UpdateCLASSNAME . Digitare partial e uno spazio per accedere all'elenco dei metodi parziali disponibili. Fare clic sul metodo update per la classe in cui si desidera aggiungere la convalida. Il codice seguente è simile al codice generato quando si seleziona un UpdateCLASSNAME metodo parziale:

    partial void UpdateCLASSNAME(CLASSNAME instance)
    {
        if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y))
        {
            string ErrorMessage = "Invalid data!";
            throw new System.Exception(ErrorMessage);
        }
    }