Dodawanie walidacji do klas jednostek

Uwaga

Zestawy danych i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Są one szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian z powrotem w bazie danych. Mimo że zestawy danych okazały się bardzo udaną technologią, zalecamy, aby nowe aplikacje platformy .NET używały platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma prostszy interfejs programowania.

Weryfikowanie klas jednostek to proces potwierdzania , że wartości wprowadzone w obiektach danych są zgodne z ograniczeniami w schemacie obiektu, a także regułami ustalonymi dla aplikacji. Sprawdzanie poprawności danych przed wysłaniem aktualizacji do bazowej bazy danych jest dobrym rozwiązaniem, które zmniejsza błędy. Zmniejsza również potencjalną liczbę rund między aplikacją a bazą danych.

Narzędzia LINQ to SQL w programie Visual Studio udostępniają metody częściowe, które umożliwiają użytkownikom rozszerzanie wygenerowanego przez projektanta kodu uruchamianego podczas wstawiania, Aktualizacje i usuwania pełnych jednostek, a także podczas i po zmianach poszczególnych kolumn.

Uwaga

W tym temacie przedstawiono podstawowe kroki dodawania walidacji do klas jednostek przy użyciu Projektant O/R. Ponieważ wykonanie tych ogólnych kroków może być trudne bez odwoływania się do określonej klasy jednostki, podano przewodnik, który korzysta z rzeczywistych danych.

Dodawanie walidacji zmian do wartości w określonej kolumnie

W tej procedurze pokazano, jak zweryfikować dane, gdy wartość w kolumnie ulegnie zmianie. Ponieważ walidacja jest wykonywana wewnątrz definicji klasy (zamiast w interfejsie użytkownika), zgłaszany jest wyjątek, jeśli wartość powoduje niepowodzenie walidacji. Zaimplementuj obsługę błędów dla kodu w aplikacji, który próbuje zmienić wartości kolumn.

Uwaga

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w tym artykule. Być może używasz innej wersji programu Visual Studio lub innych ustawień środowiska. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby zweryfikować dane podczas zmiany wartości kolumny

  1. Otwórz lub utwórz nowy plik LINQ to SQL Classes (.dbmlplik) w Projektant O/R. (Kliknij .dbml dwukrotnie plik w Eksplorator rozwiązań.

  2. W Projektant O/R kliknij prawym przyciskiem myszy klasę, dla której chcesz dodać walidację, a następnie kliknij pozycję Wyświetl kod.

    Edytor kodu otwiera klasę częściową dla wybranej klasy jednostki.

  3. Umieść kursor w klasie częściowej.

  4. W przypadku projektów Visual Basic:

    1. Rozwiń listę Nazwa metody.

    2. Znajdź metodę OnCOLUMNNAMEChanging dla kolumny, do której chcesz dodać walidację.

    3. Metoda OnCOLUMNNAMEChanging jest dodawana do klasy częściowej.

    4. Dodaj następujący kod, aby najpierw sprawdzić, czy wprowadzono wartość, a następnie upewnij się, że wartość wprowadzona dla kolumny jest akceptowalna dla aplikacji. Argument value zawiera proponowaną wartość, dlatego dodaj logikę, aby potwierdzić, że jest to prawidłowa wartość:

      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
      

    W przypadku projektów w języku C#:

    Ponieważ projekty języka C# nie generują automatycznie programów obsługi zdarzeń, można użyć funkcji IntelliSense do utworzenia metod częściowych zmieniających kolumny. Wpisz partial , a następnie spację, aby uzyskać dostęp do listy dostępnych metod częściowych. Kliknij metodę zmiany kolumny dla kolumny, dla której chcesz dodać walidację. Poniższy kod przypomina kod generowany podczas wybierania metody częściowej zmieniającej kolumnę:

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

Dodawanie weryfikacji dla Aktualizacje do klasy jednostki

Oprócz sprawdzania wartości podczas zmian można również zweryfikować dane podczas próby zaktualizowania pełnej klasy jednostki. Walidacja podczas próby aktualizacji umożliwia porównywanie wartości w wielu kolumnach, jeśli reguły biznesowe tego wymagają. Poniższa procedura pokazuje, jak zweryfikować, kiedy podjęto próbę zaktualizowania kompletnej klasy jednostki.

Uwaga

Kod weryfikacji aktualizacji do ukończenia klas jednostek jest wykonywany w klasie częściowej DataContext (zamiast w częściowej klasie określonej klasy jednostki).

Aby zweryfikować dane podczas aktualizacji klasy jednostki

  1. Otwórz lub utwórz nowy plik LINQ to SQL Classes (.dbmlplik) w Projektant O/R. (Kliknij .dbml dwukrotnie plik w Eksplorator rozwiązań.

  2. Kliknij prawym przyciskiem myszy pusty obszar na Projektant O/R i kliknij pozycję Wyświetl kod.

    Edytor kodu otwiera klasę częściową dla klasy DataContext.

  3. Umieść kursor w klasie częściowej dla klasy DataContext.

  4. W przypadku projektów Visual Basic:

    1. Rozwiń listę Nazwa metody.

    2. Kliknij pozycję UpdateENTITYCLASSNAME.

    3. Metoda UpdateENTITYCLASSNAME jest dodawana do klasy częściowej.

    4. Uzyskaj dostęp do poszczególnych wartości kolumn przy użyciu argumentu instance , jak pokazano w poniższym kodzie:

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

    W przypadku projektów w języku C#:

    Ponieważ projekty języka C# nie generują automatycznie programów obsługi zdarzeń, można użyć funkcji IntelliSense do utworzenia metody częściowej UpdateCLASSNAME . Wpisz partial , a następnie spację, aby uzyskać dostęp do listy dostępnych metod częściowych. Kliknij metodę aktualizacji dla klasy, na której chcesz dodać walidację. Poniższy kod przypomina kod generowany podczas wybierania metody częściowej UpdateCLASSNAME :

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