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. Technologie te są 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 kodu generowanego przez projektanta uruchamianego podczas wstawiania, aktualizacji i usuwania kompletnych jednostek, a także podczas i po zmianach poszczególnych kolumn.
Uwaga
Ten temat zawiera podstawowe kroki dodawania walidacji do klas jednostek przy użyciu projektanta 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
Otwórz lub utwórz nowy plik LINQ to SQL Classes (
.dbml
plik) w projektancie O/R. (Kliknij.dbml
dwukrotnie plik w Eksplorator rozwiązań.W projektancie O/R kliknij prawym przyciskiem myszy klasę, dla której chcesz dodać walidację, a następnie wybierz polecenie Wyświetl kod.
Edytor kodu otwiera klasę częściową dla wybranej klasy jednostki.
Umieść kursor w klasie częściowej.
W przypadku projektów Visual Basic:
Rozwiń listę Nazwa metody.
Znajdź metodę OnCOLUMNNAMEChanging dla kolumny, do której chcesz dodać walidację.
Metoda
OnCOLUMNNAMEChanging
jest dodawana do klasy częściowej.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 walidacji aktualizacji 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
Otwórz lub utwórz nowy plik LINQ to SQL Classes (
.dbml
plik) w projektancie O/R. (Kliknij.dbml
dwukrotnie plik w Eksplorator rozwiązań.Kliknij prawym przyciskiem myszy pusty obszar w projektancie O/R i kliknij polecenie Wyświetl kod.
Edytor kodu otwiera klasę częściową dla klasy
DataContext
.Umieść kursor w klasie częściowej dla klasy
DataContext
.W przypadku projektów Visual Basic:
Rozwiń listę Nazwa metody.
Kliknij pozycję UpdateENTITYCLASSNAME.
Metoda
UpdateENTITYCLASSNAME
jest dodawana do klasy częściowej.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
. Wpiszpartial
, 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ęściowejUpdateCLASSNAME
:partial void UpdateCLASSNAME(CLASSNAME instance) { if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y)) { string ErrorMessage = "Invalid data!"; throw new System.Exception(ErrorMessage); } }