Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Třídy DataSet a související třídy jsou starší technologie rozhraní .NET Framework z počátku 2000, které umožňují aplikacím pracovat s daty v paměti, zatímco aplikace jsou odpojeny 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ž jsou datové sady ověřenou úspěšnou technologií, doporučeným přístupem pro nové aplikace .NET je použití 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ém záznamu (GetChildRows), a nadřazené záznamy, pokud pracujete s podřízeným záznamem (GetParentRow).
Může vynucovat omezení referenční integrity, například vymazání souvisejících podřízených záznamů při odstranění nadřazeného záznamu.
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ženy do jedné jednoduché 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 DataRelationChildKeyConstraint .
Jedinečné omezení je implementováno buď jednoduchým nastavením vlastnosti datového sloupce Unique na true, nebo přidáním instance třídy UniqueConstraint do vlastnosti ParentKeyConstraint objektu DataRelation. 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 | Činnost |
|---|---|
| Cascade | Změna (aktualizace nebo odstranění) provedená v nadřazeném záznamu se provedla i 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 DBNull. 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 dceřiný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 restrikcemi
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 založená pouze na omezení vám brání odstranit nadřazený záznam, který stále obsahuje podřízené záznamy, a k těmto podřízeným záznamům nelze přistupovat přes nadřazený záznam.
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:
Pokyny v tomto článku ilustrují nejnovější verzi interaktivního vývojového prostředí (IDE) dostupného v sadě Visual Studio. Počítač může u některých prvků uživatelského rozhraní zobrazit různé názvy nebo umístění. Možná používáte jinou verzi 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 svou datovou sadu v návrháři datové sady . 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, které naplní pole Podřízená tabulka 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ě "jedna" relace typu "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ě "mnoho" 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
truea 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ých relací.Nastavte pravidla, která se mají vynucovat při provádění změn záznamů v těchto tabulkách. Další informace najdete v tématu 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 svou datovou sadu v návrháři datové sady . 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.