Vytváření relací mezi datovými sadami v aplikacích .NET Framework
Poznámka:
Datové sady a související třídy jsou staršími technologiemi rozhraní .NET Framework z počátku 2000, které aplikacím umožňují pracovat s daty v paměti, zatímco aplikace jsou odpojené od databáze. Tyto technologie jsou zvláště užitečné pro aplikace, které uživatelům umožňují upravovat data a uchovávat změny zpět do databáze. I když se datové sady ukázaly jako velmi úspěšná technologie, doporučujeme, aby nové aplikace .NET používaly Entity Framework Core. Entity Framework poskytuje přirozenější způsob práce s tabulkovými daty jako objektovými modely a má jednodušší programovací rozhraní.
Datové sady, které obsahují související tabulky dat, používají DataRelation objekty k reprezentaci relace nadřazenosti/podřízenosti mezi tabulkami a k vrácení souvisejících záznamů mezi sebou. Přidání souvisejících tabulek do datových sad pomocí Průvodce konfigurací zdroje dat nebo Návrhář datové sady vytvoří a nakonfiguruje DataRelation objekt za vás.
Objekt DataRelation provádí dvě funkce:
Může zpřístupnit záznamy související se záznamem, se kterým pracujete. Poskytuje podřízené záznamy, pokud jste v nadřazený záznam (GetChildRows) a nadřazený záznam, pokud pracujete s podřízeným záznamem (GetParentRow).
Při odstranění nadřazeného záznamu může vynutit omezení referenční integrity, například odstranění souvisejících podřízených záznamů.
Je důležité pochopit rozdíl mezi skutečným spojením a funkcí objektu DataRelation . Ve skutečném spojení jsou záznamy převzaty z nadřazených a podřízených tabulek a vloží se do jedné ploché sady záznamů. Při použití objektu DataRelation se nevytvořila žádná nová sada záznamů. DataRelation místo toho sleduje relaci mezi tabulkami a udržuje nadřazené a podřízené záznamy synchronizované.
Objekty a omezení DataRelation
Objekt DataRelation se také používá k vytvoření a vynucování následujících omezení:
Jedinečné omezení, které zaručuje, že sloupec v tabulce neobsahuje žádné duplicity.
Omezení cizího klíče, které lze použít k zachování referenční integrity mezi nadřazenou a podřízenou tabulkou v datové sadě.
Omezení zadaná v objektu DataRelation se implementují automaticky vytvořením vhodných objektů nebo nastavením vlastností. Pokud pomocí objektu DataRelation vytvoříte omezení cizího klíče, instance ForeignKeyConstraint třídy se přidají do vlastnosti objektu DataRelation ChildKeyConstraint .
Jedinečné omezení je implementováno buď jednoduchým nastavením Unique vlastnosti datového sloupce nebo true
přidáním instance UniqueConstraint třídy do vlastnosti objektu DataRelation ParentKeyConstraint . Informace o pozastavení omezení v datové sadě najdete v tématu Vypnutí omezení při vyplňování datové sady.
Pravidla referenční integrity
Jako součást omezení cizího klíče můžete zadat pravidla referenční integrity, která se použijí na třech bodech:
Při aktualizaci nadřazeného záznamu
Při odstranění nadřazeného záznamu
Při přijetí nebo odmítnutí změny
Pravidla, která můžete provést, jsou uvedena ve výčtu Rule a jsou uvedena v následující tabulce.
Pravidlo omezení cizího klíče | Akce |
---|---|
Cascade | Změna (aktualizace nebo odstranění) provedené v nadřazeného záznamu se provádí také v souvisejících záznamech v podřízené tabulce. |
SetNull | Podřízené záznamy se neodstraní, ale cizí klíč v podřízených záznamech je nastaven na DBNullhodnotu . V tomto nastavení můžou být podřízené záznamy ponechány jako osamocené – to znamená, že nemají žádný vztah k nadřazeným záznamům. Poznámka: Použití tohoto pravidla může vést k neplatným datům v podřízené tabulce. |
SetDefault | Cizí klíč v souvisejících podřízených záznamech je nastaven na výchozí hodnotu (jak je stanoveno vlastností sloupce DefaultValue ). |
None | V souvisejících podřízených záznamech se neprovedou žádné změny. V tomto nastavení můžou podřízené záznamy obsahovat odkazy na neplatné nadřazené záznamy. |
Další informace o aktualizacích v tabulkách datových sad najdete v tématu Ukládání dat zpět do databáze.
Vztahy pouze s omezením
Při vytváření objektu DataRelation máte možnost určit, že se relace použije pouze k vynucení omezení – to znamená, že se nebude používat také pro přístup k souvisejícím záznamům. Tuto možnost můžete použít k vygenerování datové sady, která je o něco efektivnější a která obsahuje méně metod než jednu s možností souvisejících záznamů. Nebudete ale mít přístup ke souvisejícím záznamům. Například relace pouze omezení vám brání v odstranění nadřazeného záznamu, který má stále podřízené záznamy, a podřízené záznamy nelze získat přístup prostřednictvím nadřazeného objektu.
Ruční vytvoření relace dat v Návrháři datových sad
Když vytváříte tabulky dat pomocí nástrojů pro návrh dat v sadě Visual Studio, relace se vytvoří automaticky, pokud se informace dají shromáždit ze zdroje dat. Pokud ručně přidáte datové tabulky z karty Sada dat na panelu nástrojů, budete pravděpodobně muset relaci vytvořit ručně. Informace o vytváření DataRelation objektů prostřednictvím kódu programu naleznete v tématu Přidání DataRelations.
Relace mezi tabulkami dat se v Návrháři datových sad zobrazují jako čáry s klíčem a nekonečným glyfem znázorňujícím aspekt relace 1:N. Ve výchozím nastavení se název relace nezobrazuje na návrhové ploše.
Poznámka:
V počítači se můžou zobrazovat různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio v tomto článku. Možná používáte jinou edici sady Visual Studio nebo jiné nastavení prostředí. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).
Vytvoření relace mezi dvěma tabulkami dat
Otevřete datovou sadu v Návrháři datových sad. Další informace naleznete v tématu Návod: Vytvoření datové sady v Návrháři datových sad.
Přetáhněte objekt Relation z panelu nástrojů DataSet do podřízené tabulky dat v relaci.
Otevře se dialogové okno Relace s naplněním podřízené tabulky tabulkou , na kterou jste přetáhli objekt Relation .
V poli Nadřazená tabulka vyberte nadřazenou tabulku. Nadřazená tabulka obsahuje záznamy na straně 1 relace 1:N.
Ověřte, že je v poli Podřízená tabulka zobrazena správná podřízená tabulka . Podřízená tabulka obsahuje záznamy na straně N relace 1:N.
Do pole Název zadejte název relace nebo ponechte výchozí název založený na vybraných tabulkách. Toto je název skutečného DataRelation objektu v kódu.
Vyberte sloupce, které spojují tabulky v seznamech Klíčové sloupce a Sloupce cizího klíče.
Vyberte, zda chcete vytvořit relaci, omezení nebo obojí.
Vyberte nebo zrušte zaškrtnutí políčka Vnořené relace . Výběrem této možnosti nastavíte Nested vlastnost na
true
a způsobí, že podřízené řádky relace budou vnořené do nadřazeného sloupce, pokud jsou tyto řádky zapsány jako data XML nebo synchronizovány s XmlDataDocument. Další informace najdete v tématu Vnoření datovýchrelací.Nastavte pravidla, která se mají vynucovat při provádění změn záznamů v těchto tabulkách. Další informace najdete na webu Rule.
Chcete-li vytvořit relaci, klikněte na tlačítko OK . V návrháři mezi dvěma tabulkami se zobrazí relační čára.
Zobrazení názvu relace v Návrháři datových sad
Otevřete datovou sadu v Návrháři datových sad. Další informace naleznete v tématu Návod: Vytvoření datové sady v Návrháři datových sad.
V nabídce Data vyberte příkaz Zobrazit popisky relací a zobrazte název relace. Vymažte tento příkaz, který skryje název relace.