Konfigurace dědičnosti pomocí Návrháře relací objektů
Návrhář Návrhář relací objektů (O/R Designer) podporuje koncept dědičnosti s jednou tabulkou, protože se často implementuje v relačních systémech. V dědičnosti jedné tabulky existuje jednoúčelová tabulka databáze, která obsahuje pole pro nadřazené informace i podřízené informace. U relačních dat obsahuje nediskriminační sloupec hodnotu, která určuje, do které třídy patří jakýkoli záznam.
Představte si Persons
například tabulku, která obsahuje všechny zaměstnance společnosti. Někteří lidé jsou zaměstnanci a někteří lidé jsou manažeři. Tabulka Persons
obsahuje sloupec s názvem EmployeeType
1 pro manažery a hodnotou 2 pro zaměstnance. Jedná se o nediskriminační sloupec. V tomto scénáři můžete vytvořit podtřídu zaměstnanců a naplnit třídu pouze záznamy, které mají EmployeeType
hodnotu 2. Můžete také odebrat sloupce, které se nepoužívají z každé třídy.
Vytvoření objektového modelu, který používá dědičnost (a odpovídá relačním datům), může být trochu matoucí. Následující postup popisuje kroky potřebné ke konfiguraci dědičnosti pomocí Návrháře relací objektů. Použití obecných kroků bez odkazování na existující tabulku a sloupce může být obtížné, takže je k dispozici návod, který používá data. Podrobné pokyny ke konfiguraci dědičnosti pomocí Návrháře relací objektů najdete v tématu Návod: Vytvoření tříd LINQ to SQL pomocí dědičnosti s jednou tabulkou (Návrhář relací objektů).
Vytvoření zděděných datových tříd
Otevřete Návrhář relací objektů přidáním položky LINQ to SQL Classes do existujícího projektu jazyka Visual Basic nebo C#.
Přetáhněte tabulku, kterou chcete použít jako základní třídu, do Návrháře relací objektů.
Přetáhněte druhou kopii tabulky do Návrháře relací objektů a přejmenujte ji. Toto je odvozená třída nebo podtřída.
Klikněte na Dědičnost na kartě Návrhář relací objektů panelu nástrojů a vyberte podtřídu (tabulku, kterou jste přejmenovali) a připojte ji k základní třídě.
Poznámka:
Klikněte na položku Dědičnost v sadě nástrojů a uvolněte tlačítko myši, klikněte na druhou kopii třídy, kterou jste vytvořili v kroku 3, a pak vyberte první třídu, kterou jste vytvořili v kroku 2. Šipka na čáře dědičnosti odkazuje na první třídu.
V každé třídě odstraňte všechny vlastnosti objektu, které nechcete zobrazit a které nejsou použity pro přidružení. Při pokusu o odstranění vlastností objektu použitých pro přidružení se zobrazí chyba:
The property <property name> cannot be deleted because it is participating in the association <association name>
.Poznámka:
Vzhledem k tomu, že odvozená třída dědí vlastnosti definované v její základní třídě, stejné sloupce nelze definovat v každé třídě. (Sloupce se implementují jako vlastnosti.) Vytváření sloupců v odvozené třídě můžete povolit nastavením modifikátoru dědičnosti u vlastnosti v základní třídě. Další informace naleznete v tématu Základy dědičnosti (Visual Basic).
Vyberte řádek dědičnosti v Návrháři relací objektů.
V okně Vlastnosti nastavte diskriminující vlastnost na název sloupce, který rozlišuje záznamy ve vašich třídách.
Nastavte vlastnost diskriminátoru odvozené třídy na hodnotu v databázi, která určuje záznam jako zděděný typ. (Toto je hodnota uložená v nediskriminačním sloupci a slouží k určení zděděné třídy.)
Nastavte vlastnost Diskriminátor základní třídy na hodnotu, která určuje záznam jako základní typ. (Toto je hodnota uložená v nediskriminačním sloupci a slouží k určení základní třídy.)
Volitelně můžete také nastavit vlastnost Dědičnost Výchozí určit typ v hierarchii dědičnosti, který se používá při načítání řádků, které neodpovídají žádnému definovanému kódu dědičnosti. Jinými slovy, pokud záznam má hodnotu ve svém nediskriminačním sloupci, který neodpovídá hodnotě ve vlastnostech diskriminátoru odvozené třídy nebo diskriminující hodnoty základní třídy, záznam se načte do typu určeného jako Výchozí dědičnost.