LINQ to SQL – własna walidacja dla insert/update/delete

Po stworzeniu dzięki użyciu designera dla LINQ to SQL wchodzącego w skład VS 2008 klas zawierających strukturę tabel z bazy, do dyspozycji programisty zostaje oddany szereg metod, dzięki którym może on sprawdzić, które z pól zostało zmienione  i odpowiednio zareagować. Mi jednak potrzebna była możliwość sprawdzenia zawartości kilku pól. Rozejrzałem się więc szybko na google’u i natknąłem się na metodę OnValidate().


Szybko przystąpiłem do tekstów, jednak zakończyły się one fiaskiem:

Nie odnaleziono deklaracji definiującej dla deklaracji implementującej metody częściowej „Product.OnValidate()”.

Po kolejnej chwili spędzonej na necie znalazł się winny (link). Cóż, wiele artykułów nt. LINQ zostało stworzonych w chwili jego premiery, a ja miałem (nie)szczęście akurat na taki trafić. Od tego czasu po prostu zmieniła się sygnatura tej metody. Obecnie prezentuje się ona następująco:

partial void OnValidate(System.Data.Linq.ChangeAction action);

Dodatkowy argument umożliwia obecnie rozróżnienie, z jaką operacją mamy do czynienia. A wyróżnić można:

public enum ChangeActio
{
   None = 0,
   Delete,
   Insert,
   Update
}

W tym momencie mogłem już bezproblemowo stworzyć swoją własną logikę dla dowolnego polecenia. Przykładowy kod uniemożliwiający usunięcie produktu z tabeli Products (z bazy Northwind) prezentuje się następująco:

Metoda OnValidate - przykład zastosowania

.

No comments yet

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmień )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmień )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmień )

Connecting to %s

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.