Dela via


Lägga till validering i entitetsklasser

Anmärkning

Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.

Validering av entitetsklasser är en process för att bekräfta att de värden som anges i dataobjekten uppfyller begränsningarna i ett objekts schema och även de regler som har upprättats för programmet. Att verifiera data innan du skickar uppdateringar till den underliggande databasen är en bra idé som minskar felen. Det minskar också det potentiella antalet tur- och returresor mellan ett program och databasen.

LINQ till SQL-verktygen i Visual Studio innehåller partiella metoder som gör det möjligt för användare att utöka den designergenererade kod som körs under Infogningar, uppdateringar och borttagningar av fullständiga entiteter, och även under och efter enskilda kolumnändringar.

Anmärkning

Det här avsnittet innehåller de grundläggande stegen för att lägga till validering i entitetsklasser med hjälp av O/R Designer. Eftersom det kan vara svårt att följa dessa allmänna steg utan att referera till en specifik entitetsklass tillhandahålls en genomgång som använder faktiska data.

Lägga till validering för ändringar i värdet i en specifik kolumn

Den här proceduren visar hur du verifierar data när värdet i en kolumn ändras. Eftersom valideringen utförs i klassdefinitionen (i stället för i användargränssnittet) genereras ett undantag om värdet gör att verifieringen misslyckas. Implementera felhantering för koden i ditt program som försöker ändra kolumnvärdena.

Anmärkning

Anvisningarna i den här artikeln illustrerar den senaste versionen av den interaktiva utvecklingsupplevelsen (IDE) som är tillgänglig i Visual Studio. Datorn kan visa olika namn eller platser för vissa av användargränssnittselementen. Du kanske använder en annan version av Visual Studio eller andra miljöinställningar. Mer information finns i Anpassa IDE-.

Verifiera data under en kolumns värdeändring

  1. Öppna eller skapa en ny LINQ till SQL-klassfil (.dbml fil) i O/R Designer. (Dubbelklicka på .dbml filen i Solution Explorer.)

  2. Högerklicka på den klass som du vill lägga till validering för i O/R Designer och välj sedan Visa kod.

    Kodredigeraren öppnas med en partiell klass för den valda entitetsklassen.

  3. Placera markören i den partiella klassen.

  4. För Visual Basic-projekt:

    1. Expandera listan Metodnamn .

    2. Leta upp metoden OnCOLUMNNAMEChanging för kolumnen som du vill lägga till validering i.

    3. En OnCOLUMNNAMEChanging metod läggs till i den partiella klassen.

    4. Lägg till följande kod för att först kontrollera att ett värde har angetts och se sedan till att det angivna värdet för kolumnen är acceptabelt för ditt program. Argumentet value innehåller det föreslagna värdet, så lägg till logik för att bekräfta att det är ett giltigt värde:

      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
      

    För C#-projekt:

    Eftersom C#-projekt inte genererar händelsehanterare automatiskt kan du använda IntelliSense för att skapa kolumnförändrande partiella metoder. Skriv partial och sedan ett utrymme för att komma åt listan över tillgängliga partiella metoder. Klicka på förändringsmetoden för kolumnen som du vill lägga till validering för. Följande kod liknar den kod som genereras när du väljer en kolumnförändrande partiell metod:

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

Lägga till validering för uppdateringar i en entitetsklass

Förutom att kontrollera värden under ändringar kan du även verifiera data när ett försök görs att uppdatera en fullständig entitetsklass. Med validering under ett uppdateringsförsök kan du jämföra värden i flera kolumner om affärsregler kräver detta. Följande procedur visar hur du verifierar när ett försök görs att uppdatera en fullständig entitetsklass.

Anmärkning

Verifieringskod för uppdateringar för att slutföra entitetsklasser körs i den partiella DataContext klassen (i stället för i den partiella klassen för en specifik entitetsklass).

Verifiera data under en uppdatering av en entitetsklass

  1. Öppna eller skapa en ny LINQ till SQL-klassfil (.dbml fil) i O/R Designer. (Dubbelklicka på .dbml filen i Solution Explorer.)

  2. Högerklicka på ett tomt område i O/R Designer och klicka på Visa kod.

    Kodredigeraren öppnas med en partiell klass för DataContext.

  3. Placera markören i den partiella klassen för DataContext.

  4. För Visual Basic-projekt:

    1. Expandera listan Metodnamn .

    2. Klicka på UpdateENTITYCLASSNAME.

    3. En UpdateENTITYCLASSNAME metod läggs till i den partiella klassen.

    4. Få åtkomst till enskilda kolumnvärden med hjälp instance av argumentet, enligt följande kod:

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

    För C#-projekt:

    Eftersom C#-projekt inte genererar händelsehanterare automatiskt kan du använda IntelliSense för att skapa den partiella UpdateCLASSNAME metoden. Skriv partial och sedan ett utrymme för att komma åt listan över tillgängliga partiella metoder. Klicka på uppdateringsmetoden för klassen där du vill lägga till validering. Följande kod liknar den kod som genereras när du väljer en UpdateCLASSNAME partiell metod:

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