Sdílet prostřednictvím


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

  1. 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.

  2. 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 .

  3. V poli Nadřazená tabulka vyberte nadřazenou tabulku. Nadřazená tabulka obsahuje záznamy na straně 1 relace 1:N.

  4. 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.

  5. 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.

  6. Vyberte sloupce, které spojují tabulky v seznamech Klíčové sloupce a Sloupce cizího klíče.

  7. Vyberte, zda chcete vytvořit relaci, omezení nebo obojí.

  8. 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ýchrelací.

  9. 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.

  10. 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

  1. 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.

  2. 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.