Udostępnij za pośrednictwem


Konfigurowanie dziedziczenia za pomocą narzędzia Object Relational Designer

Projektant relacyjne obiektów (O/R Projektant) obsługuje koncepcję dziedziczenia z jedną tabelą, ponieważ jest często implementowana w systemach relacyjnych. W dziedziczeniu z jedną tabelą istnieje pojedyncza tabela bazy danych zawierająca pola zarówno dla informacji nadrzędnych, jak i informacji podrzędnych. W przypadku danych relacyjnych kolumna dyskryminująca zawiera wartość określającą, do której klasy należy dowolny rekord.

Rozważmy na przykład tabelę zawierającą Persons wszystkich zatrudnionych przez firmę. Niektórzy ludzie są pracownikami, a niektórzy są menedżerami. Tabela Persons zawiera kolumnę o nazwie EmployeeType zawierającą wartość 1 dla menedżerów i wartość 2 dla pracowników. Jest to kolumna dyskryminująca. W tym scenariuszu można utworzyć podklasę pracowników i wypełnić klasę tylko rekordami, które mają EmployeeType wartość 2. Możesz również usunąć kolumny, które nie mają zastosowania z każdej z klas.

Tworzenie modelu obiektów korzystającego z dziedziczenia (i odpowiada danym relacyjnym) może być nieco mylące. Poniższa procedura przedstawia kroki wymagane do skonfigurowania dziedziczenia przy użyciu Projektant O/R. Wykonanie ogólnych kroków bez odwoływania się do istniejącej tabeli i kolumn może być trudne, dlatego podano przewodnik, który korzysta z danych. Aby uzyskać szczegółowe instrukcje krok po kroku dotyczące konfigurowania dziedziczenia przy użyciu Projektant O/R, zobacz Przewodnik: tworzenie klas LINQ to SQL przy użyciu dziedziczenia z jedną tabelą (O/R Projektant).

Aby utworzyć dziedziczone klasy danych

  1. Otwórz Projektant O/R, dodając element LINQ to SQL Classes do istniejącego projektu Języka Visual Basic lub C#.

  2. Przeciągnij tabelę, której chcesz użyć jako klasy bazowej, na Projektant O/R.

  3. Przeciągnij drugą kopię tabeli na Projektant O/R i zmień jej nazwę. Jest to klasa pochodna lub podklasa.

  4. Kliknij pozycję Dziedziczenie na karcie Projektant obiektu przybornika, a następnie kliknij podklasę (zmienioną nazwę tabeli) i połącz ją z klasą bazową.

    Uwaga

    Kliknij element Dziedziczenie w Przyborniku i zwolnij przycisk myszy, kliknij drugą kopię klasy utworzonej w kroku 3, a następnie kliknij pierwszą klasę utworzoną w kroku 2. Strzałka w wierszu dziedziczenia wskazuje pierwszą klasę.

  5. W każdej klasie usuń wszystkie właściwości obiektu, które nie mają być wyświetlane i które nie są używane do skojarzeń. Jeśli próbujesz usunąć właściwości obiektu używane dla skojarzeń, wystąpi błąd: The property <property name> cannot be deleted because it is participating in the association <association name>.

    Uwaga

    Ponieważ klasa pochodna dziedziczy właściwości zdefiniowane w swojej klasie bazowej, nie można zdefiniować tych samych kolumn w każdej klasie. (Kolumny są implementowane jako właściwości). Możesz włączyć tworzenie kolumn w klasie pochodnej, ustawiając modyfikator dziedziczenia we właściwości w klasie bazowej. Aby uzyskać więcej informacji, zobacz Podstawy dziedziczenia (Visual Basic).

  6. Wybierz wiersz dziedziczenia w Projektant O/R.

  7. W oknie Właściwości ustaw właściwość dyskryminującą na nazwę kolumny, która rozróżnia rekordy w klasach.

  8. Ustaw właściwość Wartość dyskryminująca klasy pochodnej na wartość w bazie danych, która wyznacza rekord jako typ dziedziczony. (Jest to wartość przechowywana w kolumnie dyskryminującej i jest używana do wyznaczenia dziedziczonej klasy).

  9. Ustaw właściwość Wartość dyskryminująca klasy bazowej na wartość, która wyznacza rekord jako typ podstawowy. (Jest to wartość przechowywana w kolumnie dyskryminującej i jest używana do wyznaczenia klasy bazowej).

  10. Opcjonalnie można również ustawić właściwość Default dziedziczenia, aby wyznaczyć typ w hierarchii dziedziczenia, która jest używana podczas ładowania wierszy, które nie pasują do żadnego zdefiniowanego kodu dziedziczenia. Innymi słowy, jeśli rekord ma wartość w swojej kolumnie dyskryminującej, która nie pasuje do wartości we właściwościach wartości dyskryminującej klasy pochodnej lub wartości dyskryminującej klasy bazowej, rekord jest ładowany do typu wyznaczonego jako Wartość domyślna dziedziczenia.