Sdílet prostřednictvím


Ukládání dat v datových sadách

Ukládání dat je proces uchování změněných dat v aplikaci zpět do původního úložiště dat, obvykle do relační databáze, jako je například server SQL Server.

Protože je datová sada vlastně mezipaměť, což je kopie dat v paměti, proces zápisu informací do původního zdroje dat je oddělený od procesu úpravy dat v datové sadě.Aktualizovaná data v datových sadách lze odeslat zpět do databáze voláním jedné z metod Update objektu TableAdapter nebo voláním jedné z metod DBDirect objektu TableAdapter.

Další informace o odesílání změn datové sady zpět do databáze naleznete v tématech Postupy: Aktualizace dat pomocí TableAdapter a Postupy: Uložení změn datové sady do databáze.

Systém Visual Studio poskytuje komponentu TableAdapterManager, která usnadňuje provádění ukládání při ukládání dat v souvisejících tabulkách.Tato komponenta zajišťuje, že je ukládání provedeno ve správném pořadí podle omezení cizího klíče definovaného v databázi.Další informace naleznete v tématu Přehled hierarchické aktualizace.

Další informace o úpravách dat v datové sadě naleznete v tématu Upravování dat ve vaší aplikaci.

Dvoufázové aktualizace

Aktualizace zdroje dat pomocí datové sady je dvoufázový proces.Prvním krokem je aktualizace datové sady novými informacemi, jako jsou nové záznamy, změněné záznamy nebo odstraněné záznamy.Pokud se aplikace týká pouze datové sady, například po aktualizaci datové sady ji odešlete do jiné aplikace, která bude provádět další zpracování této datové sady, pak jste s aktualizací hotovi.

[!POZNÁMKA]

V modelu Windows Forms architektura vazby dat zabezpečuje odesílání změn z ovládacích prvků vázaných na data do datové sady a tuto datovou sadu není nutné explicitně aktualizovat pomocí vlastního kódu.Další informace naleznete v tématu Windows Forms – datová vazba.

Pokud aktualizujete zdroj dat (například databázi), druhým krokem je odeslání změn z datové sady do původního zdroje dat.To znamená, že proces aktualizace datové sady nezapisuje změny do podkladového zdroje dat. Tento druhý krok je nutné provést explicitně.To lze obvykle provést voláním metody Update stejného objektu TableAdapter (nebo datového adaptéru) použitého k naplnění datové sady, ale lze také použít jiné adaptéry, chcete-li například přesunout data z jednoho zdroje dat do jiného nebo aktualizovat více zdrojů dat.

Dvoufázový proces aktualizace a úloha typu DataRowVersion v úspěšné aktualizaci

Visual Basic – aktualizace sady dat

Strukturálně datová sada zpřístupňuje data jako sady kolekcí.Datové sady obsahují kolekce tabulek.Tabulky obsahují kolekce řádků.Tabulky jsou vystaveny jako kolekce objektu DataSet a záznamy jsou k dispozici v kolekci Rows objektů typu DataTable.Provádění změn dat v datové sadě jednoduše manipulací těmito kolekcemi pomocí základních metod kolekce je možné, ale pokud chcete aktualizovat podkladový zdroj dat je nutné použít metody navržené speciálně pro změnu datové sady.

Chcete-li například odebrat záznam z tabulky dat, lze zavolat metodu RemoveAt kolekce Rows této tabulky, což záznam fyzicky odstraní z datové sady.Pokud datovou sadu používáte pouze jako strukturované úložiště dat a netýká se vás přenos informací o změnách do jiné aplikace, je tato manipulace s kolekcí přijatelným způsobem aktualizace datové sady.

Nicméně pokud plánujete odeslání změn do zdroje dat nebo jiné aplikace, je nutné spravovat informace o změnách (metadata) každé aktualizace.Později při odeslání změn do zdroje dat nebo aplikace bude mít proces informace, které jsou nutné pro nalezení a aktualizaci odpovídajících záznamů.Například při odstranění záznamu v datové sadě jsou informace o odstraněných záznamech v této datové sadě uchovány.Tímto způsobem, když je metoda DeleteCommand objektu TableAdapter zavolána, existuje dostatek historických informací pro vyhledání původního záznamu ve zdroji dat a lze jej odstranit.Další informace naleznete v části „Uchování informací o změnách“.

Sloučení datových sad

Obsah datové sady lze aktualizovat pomocí slučování, to znamená, že se obsah jedné datové sady zkopíruje (označované jako zdrojová datová sada) do volající datové sady (označované jako cílová datová sada).Při sloučení datových sad jsou nové záznamy ve zdrojové datové sadě přidány do cílové datové sady.Případně jsou další sloupce zdrojové datové sady přidány do cílové datové sady.Sloučení datových sad je obzvláště užitečné, pokud máte místní datovou sadu a získáte druhou datovou sadu z jiné aplikace nebo komponenty, jako jsou webové služby XML.Je také užitečné, pokud potřebujete integrovat data z více datových sad.

Při slučování datových sad, lze také předat nepovinný argument typu Boolean (preserveChanges), který metodě Merge říká, že chcete zachovat stávající úpravy v cílové datové sadě.Protože datové sady udržují více verzí záznamů, je důležité mít na paměti, že je sloučena více než jedna verze těchto záznamů.Následující tabulka ilustruje záznam ve dvou datových sadách, které budou sloučeny:

DataRowVersion

Cílová datová sada

Zdrojová datová sada

Původní

James Wilson

James C.Wilson

Aktuální

Jim Wilson

James C.Wilson

Volání metody Merge na tabulce výše s výsledky metody preserveChanges=false targetDataset.Merge(sourceDataset) v následujícím příkladu:

DataRowVersion

Cílová datová sada

Zdrojová datová sada

Původní

James C.Wilson

James C.Wilson

Aktuální

James C.Wilson

James C.Wilson

Volání metody Merge s výsledky metody preserveChanges = true targetDataset.Merge(sourceDataset, true) v následujícím příkladu:

DataRowVersion

Cílová datová sada

Zdrojová datová sada

Původní

James C.Wilson

James C.Wilson

Aktuální

Jim Wilson

James C.Wilson

Poznámka k upozorněníUpozornění

Ve scénáři preserveChanges = true, pokud je metoda RejectChanges zavolána na záznamu v cílové datové sadě, vrátí se k původním datům ze zdrojové datové sady.To znamená, že pokud se pokusíte aktualizovat původní zdroj dat cílovou datovou sadou, nemusí být možné nalézt původní řádek určený k aktualizaci.Ačkoli lze zabránit narušení souběžného zpracování naplněním jiné datové sady s aktualizovanými záznamy ze zdroje dat a poté provést sloučení, což zabrání narušení souběžného zpracování. (Pokud jiný uživatel změní záznam ve zdroji dat po naplnění datové sady, dojde k narušení souběžného zpracování.)

Omezení aktualizace

Chcete-li změnit existující řádek dat, přidejte nebo aktualizujte data v těchto jednotlivých sloupcích.Pokud datová sada obsahuje omezení (například cizí klíče nebo omezení se zakázanou hodnotou null), je možné, že při aktualizaci záznamu, po dokončení aktualizace jednoho sloupce, ale předtím, než se dostanete na další, tento záznam může být dočasně v chybovém stavu.

Chcete-li zabránit předčasnému narušení omezení lze omezení aktualizace dočasně pozastavit.To má dva účely:

  • Zabraňuje chybě ve vyvolání při aktualizaci jednoho sloupce před tím, než se dostanete k jinému sloupci.

  • Pozastaví vyvolání některých událostí aktualizace (události, které se často používají pro ověřování).

Po dokončení aktualizace lze kontrolu omezení znovu povolit, což také znovu povolí události aktualizace a vyvolá je.

[!POZNÁMKA]

V modelu Windows Forms architektura vázání dat integrovaná do objektu datagrid pozastaví kontrolu omezení, dokud se fokus nepřesune z řádku a není nutné explicitně volat metody BeginEdit, EndEdit nebo CancelEdit.

Omezení jsou automaticky zakázána, když je metoda Merge zavolána na datové sadě.V případě, že po dokončení sloučení existují omezení datové sady, která nelze povolit, je vyvolána výjimka ConstraintException.V této situaci je vlastnost EnforceConstraints nastavena na hodnotu false a všechna porušení omezení musí být vyřešeny před nastavením vlastnosti EnforceConstraints na hodnotu true.

Po dokončení aktualizace lze kontrolu omezení znovu povolit, což také znovu povolí události aktualizace a vyvolá je.

Další informace o událostech zastavení naleznete v tématu Postupy: Vypnutí omezení při naplňování datové sady.

Chyby aktualizace datové sady

Při aktualizaci záznamu v datové sadě existuje možnost chyby.Například můžete neúmyslně zapsat data do sloupce, který má nesprávný typ dat nebo je příliš dlouhý nebo má jiné problémy integrity.Kromě toho lze mít ověřovací kontroly specifické pro aplikaci, které mohou vyvolat vlastní chyby v jakémkoli stádiu události aktualizace.Další informace naleznete v tématu Ověřování dat v datových sadách.

Uchování informací o změnách

Informace o změnách v datové sadě jsou udržovány dvěma způsoby, použitím příznaku, který označuje, že řádek byl změněn (RowState) a udržováním více kopií záznamu (DataRowVersion).Procesy pomocí těchto informací mohou zjistit, co se v datové sadě změnilo a mohou odeslat příslušné aktualizace do zdroje dat.

Vlastnost RowState

Vlastnost RowState objektu DataRow je hodnota, která poskytuje informace o stavu konkrétního řádku s daty.

Následující tabulka uvádí možné hodnoty výčtu DataRowState:

Hodnota výčtu DataRowState

Description

Added

Řádek byl přidán jako položka do kolekce DataRowCollection. (Řádek v tomto stavu nemá odpovídající původní verzi, protože neexistoval v době posledního volání metody AcceptChanges).

Deleted

Řádek byl odstraněn pomocí metody Delete objektu DataRow.

Detached

Řádek byl vytvořen, ale není součástí žádné kolekce DataRowCollection.Objekt DataRow je v tomto stavu ihned poté, co byl vytvořen a před přidáním do kolekce nebo pokud byl odebrán z kolekce.

Modified

Nějakým způsobem se změnila hodnota sloupce v řádku.

Unchanged

Řádek se nezměnil od posledního volání metody AcceptChanges.

Výčet DataRowVersion

Datové sady udržují více verzí záznamů.Výčet DataRowVersion objektu DataRow je hodnota, kterou lze použít k vrácení specifické verze objektu DataRow.

Následující tabulka uvádí možné hodnoty výčtu DataRowVersion:

Hodnota výčtu DataRowVersion

Description

Current

Aktuální verze záznamu obsahuje všechny změny provedené s tímto záznamem od posledního volání metody AcceptChanges.Pokud byl tento řádek odstraněn neexistuje žádná aktuální verze.

Default

Výchozí hodnota záznamu definovaná schématem datové sady nebo zdrojem dat.

Original

Původní verze záznamu je kopie záznamu, když byly poslední změny potvrzeny v datové sadě.V praxi je to obvykle verze záznamu načteného ze zdroje dat.

Proposed

Navrhovaná verze záznamu, která je dočasně k dispozici v době, kdy probíhá aktualizace, což je mezi voláním metod BeginEdit a EndEdit.Obvykle k navrhované verzi záznamu přistupujete v obslužné rutině události jako je RowChanging.Volání metody CancelEdit vrátí zpět změny a odstraní navrhované verze řádku dat.

Původní a aktuální verze jsou užitečné při přenosu informací aktualizace do zdroje dat.Po odeslání aktualizace do zdroje dat je nová informace pro databázi obvykle v aktuální verzi záznamu.Informace z původní verze slouží k vyhledání záznamu, který chcete aktualizovat.Například v případě, kdy je změněn primární klíč záznamu, je nutné mít způsob, jak najít správný záznam ve zdroji dat, aby bylo možné aktualizovat změny.Pokud původní verze neexistuje, musí být tento záznam s největší pravděpodobností připojen ke zdroji dat, z čehož vyplývá nejen dodatečný nežádoucí záznam, ale také jeden záznam, který je zastaralý a nepřesný.Tyto dvě verze se používají také v řízení souběžnosti, lze porovnat původní verzi se záznamem ve zdroji dat, chcete-li zjistit, zda byl záznam od načtení do datové sady změněn.

Navrhovaná verze je užitečná, pokud potřebujete provést ověření před skutečným potvrzením změn do datové sady.

I v případě, že došlo ke změně záznamů, původní nebo aktuální verze tohoto řádku vždy neexistují.Pokud vložíte nový řádek do tabulky, neexistuje žádná původní verze, pouze aktuální verze.Podobně pokud odstraníte řádek voláním metody Delete tabulky, existuje původní verze, ale žádná aktuální verze.

Lze otestovat, zda konkrétní verze záznamu existuje dotázáním metody HasVersion datového řádku.Ke kterékoli verzi záznamu lze přistupovat pomocí předání hodnoty výčtu DataRowVersion jako nepovinného argumentu při požadavku na hodnotu sloupce.

Zjištění změněných záznamů

Je běžné, že se v datové sadě neaktualizuje každý záznam.Uživatel může například pracovat s ovládacím prvkem DataGridView modelu Windows Forms, který zobrazuje mnoho záznamů.Uživatel však může aktualizovat pouze několik položek, některé odstranit a některé nové vložit.Datové sady a tabulky dat poskytují metodu (GetChanges) pro vrácení pouze těch řádků, které byly změněny.

Lze vytvářet podmnožiny změněných záznamů pomocí metody GetChanges tabulky dat (GetChanges) nebo datové sady (GetChanges) samotné.Pokud zavoláte tuto metodu pro tabulku dat, vrátí kopii této tabulky s pouze změněnými záznamy.Podobně, pokud zavoláte tuto metodu na datové sadě, dostanete novou datovou sadu obsahující pouze změněné záznamy.Metoda GetChanges sama o sobě vrátí všechny změněné záznamy.Naopak, předáním požadované hodnoty výčtu DataRowState jako parametr metodě GetChanges, lze určit jakou podmnožinu změněných záznamů chcete, nově přidané záznamy, záznamy označené k odstranění, odpojené záznamy nebo změněné záznamy.

Získání podmnožiny změněných záznamů je obzvláště užitečné, když chcete záznamy poslat další komponentě ke zpracování.Místo odeslání celé datové sady lze snížit režii komunikace s jinými komponentami získáním pouze těch záznamů, které tato komponenta potřebuje.Další informace naleznete v tématu Postupy: Načítání změněných řádků.

Uložení změn do datové sady

Jakmile jsou v datové sadě provedeny změny, je nastavena vlastnost RowState změněných řádků.Původní a aktuální verze záznamů jsou vytvořeny a uchovány a jsou k dispozici prostřednictvím vlastnosti RowVersion.Metadata uložená v těchto vlastnostech představují změny, které je třeba poslat pro správnou aktualizaci do zdroje dat.

Pokud tyto změny odráží aktuální stav zdroje dat, není nutné tyto informace nadále udržovat.Obvykle existují dva případy, kdy jsou datová sada a její zdroj shodné:

  • Ihned poté, co jste načetli informace do datové sady, například při čtení dat ze zdroje.

  • Po odeslání změn z datové sady do zdroje dat (ale ne dříve, protože se ztratí informace o změně potřebné k odeslání změn do databáze).

Probíhající změny lze do datové sady zapsat voláním metody AcceptChanges.Obvykle by metoda AcceptChanges měla být v aplikaci volána v následujících případech.

  • Poté, co jste načetli datovou sadu.Když načtete datovou sadu voláním metody Fill objektu TableAdapter, tento adaptér automaticky uloží změny za vás.Avšak při načtení datové sady sloučením s jiným objektem je nutné změny uložit ručně.

    [!POZNÁMKA]

    Adaptéru lze zabránit v automatickém ukládání změn voláním metody Fill s vlastností AcceptChangesDuringFill adaptéru nastavenou na hodnotu false.Pokud je nastavena na hodnotu false, pak vlastnost RowState každého řádku vloženého během tohoto naplnění je nastavena na hodnotu Added.

  • Po odeslání změn datové sady do jiného procesu, například webové služby XML.

    Poznámka k upozorněníUpozornění

    Uložení změny tímto způsobem vymaže všechny informace o změnách.Neukládejte změny, dokud nemáte provedeny všechny operace, u kterých aplikace závisí na znalosti, jaké změny byly provedeny v datové sadě.

Tato metoda provede následující akce:

  • Zapíše verzi Current záznamu do jeho verze Original, čímž přepíše původní verzi.

  • Odstraní jakýkoli řádek, jehož vlastnost RowState je nastavena na hodnotu Deleted.

  • Nastaví vlastnost RowState záznamu na hodnotu Unchanged.

Metoda AcceptChanges je k dispozici ve třech úrovních.Lze ji volat na objektu DataRow, což potvrdí změny pouze pro tento řádek.Lze ji také volat na objektu DataTable, což uloží všechny řádky v tabulce, nebo na objektu DataSet, což uloží všechny probíhající změny ve všech záznamech všech tabulek datové sady.

Následující tabulka popisuje, jaké změny jsou uloženy, v závislosti na jakém objektu je tato metoda volána.

Metoda

Výsledek

DataRow.AcceptChanges

Jsou uloženy změny pouze konkrétního řádku

DataTable.AcceptChanges

Jsou uloženy změny všech řádků v určité tabulce

DataSet.AcceptChanges

Jsou potvrzeny změny všech řádků ve všech tabulkách datové sady

[!POZNÁMKA]

Při načtení datové sady voláním metody Fill objektu TableAdapter nemusíte explicitně ukládat změny, ve výchozím nastavení metoda Fill volá metodu AcceptChanges po dokončení načtení dat tabulky.

Související metoda RejectChanges vrátí změny zpět zkopírováním verze záznamů Original zpět do verze Current a nastavením vlastnosti RowState každého záznamu zpět na hodnotu Unchanged.

Ověřování dat

Chcete-li ověřit, že data v aplikaci splňují požadavky procesů, kterým jsou předány, je často nutné přidat ověřování.To může zahrnovat kontrolu, že je vstup uživatele ve formuláři správný, ověření dat odeslaných do aplikace jinou aplikací nebo i kontrolu vypočtené informace uvnitř komponenty spadá do požadavků na omezení zdroje dat a aplikace.

Data lze ověřit několika způsoby:

  • V obchodní vrstvě přidáním kódu pro ověření dat do aplikace.Datová sada je jedním z míst, kde toto lze provést.Datová sada poskytuje některé výhody ověření datové vrstvy, například schopnost ověřit změny při změně hodnot řádků a sloupců.Další informace naleznete v tématu Ověřování dat v datových sadách.

  • V prezentační vrstvě přidáním ověřování do formulářů.Další informace naleznete v tématu Ověření uživatelského vstupu ve Windows Forms.

  • V datové vrstvě odesláním dat do zdroje dat, například do databáze, a umožněním přijmutí nebo odmítnutí dat.Práce s databází, která má sofistikované funkce pro ověření dat a poskytuje informace o chybách, může být praktickým přístupem, protože lze data ověřit bez ohledu na to, odkud pocházejí.Ačkoli to nemusí pojmout specifické ověřovací požadavky aplikace.Navíc ověření dat pomocí zdroje dat může způsobit mnoho výměn dat se zdrojem dat v závislosti na tom, jak aplikace usnadňuje řešení chyb ověřování vyvolané datovou vrstvou.

    Poznámka k zabezpečeníPoznámka k zabezpečení

    Při použití příkazů dat s vlastností CommandType nastavenou na hodnotu Text, pečlivě zkontrolujte informace odeslané z klienta před jejich předáním do databáze.Uživatelé se zlými úmysly se mohou pokusit odeslat (vložit) změněné nebo další příkazy jazyka SQL ve snaze získat neoprávněný přístup nebo poškodit databázi.Před přenosem vstupu uživatele do databáze vždy ověřte, že jsou informace platné, je doporučeno vždy používat parametrizované dotazy nebo uložené procedury, pokud je to možné.Další informace naleznete v tématu Script Exploits Overview.

Poté, co byly provedeny změny v datové sadě, lze změny odeslat do zdroje dat.To lze nejčastěji provést voláním metody Update objektu TableAdapter (nebo datového adaptéru).Tato metoda projde každý záznam v tabulce dat, určí požadovaný typ aktualizace (aktualizaci, vložení nebo odstranění) a poté provede příslušný příkaz.

Jak je aktualizace přenášena do zdroje dat

Jako příklad, jak jsou aktualizace provedeny, předpokládejme, že aplikace používá datovou sadu obsahující jedinou datovou tabulku.Aplikace načte dva řádky z databáze.Po načtení tabulka dat v paměti vypadá takto:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Unchanged)    c400         Nancy Buchanan    Pending

Aplikace změní stav osoby Nancy Buchanan na „Preferred“. V důsledku této změny se hodnota vlastnosti RowState pro tento řádek změní z hodnoty Unchanged na hodnotu Modified.Hodnota vlastnosti RowState prvního řádku zůstane nastavena na hodnotu Unchanged.Tabulka dat nyní vypadá takto:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Modified)     c400         Nancy Buchanan    Preferred

Aplikace nyní zavolá metodu Update, čímž přenese datovou sadu do databáze.Metoda zkontroluje každý řádek.Pro první řádek tato metoda nepřenáší žádný příkaz jazyka SQL do databáze, protože se tento řádek od původního načtení z databáze nezměnil.

Pro druhý řádek však metoda Update automaticky vyvolá správný příkaz a přenese jej do databáze.Specifická syntaxe příkazu jazyka SQL závisí na dialektu jazyka SQL podporovaného podkladovým úložištěm dat.Ale následující obecné vlastnosti předávaného příkazu jazyka SQL jsou pozoruhodné:

  • Přenášený příkaz jazyka SQL je příkaz UPDATE.Adaptér ví, že má použít příkaz UPDATE, protože hodnota vlastnosti RowState je nastavena na hodnotu Modified.

  • Přenášený příkaz jazyka SQL obsahuje klauzuli WHERE označující, že cíl příkazu UPDATE je řádek jehož sloupec CustomerID = 'c400'.Tato část příkazu SELECT odlišuje tento cíl od všech ostatních, protože sloupec CustomerID je primárním klíčem cílové tabulky.Informace pro klauzuli WHERE je odvozena z původní verze záznamu (DataRowVersion.Original), která obsahuje hodnoty požadované k identifikaci změněného řádku.

  • Přenášený příkaz jazyka SQL obsahuje klauzule SET, která nastaví nové hodnoty změněných sloupců.

    [!POZNÁMKA]

    Pokud je vlastnost UpdateCommand objektu TableAdapter nastavena na název uložené procedury, adaptér příkaz jazyka SQL nesestaví.Místo toho spustí tuto uloženou proceduru s příslušnými parametry.

Předávání parametrů

Hodnoty záznamů, které mají být aktualizovány v databázi, jsou obvykle předávány pomocí parametrů.Pokud metoda Update objektu TableAdapter spustí příkaz UPDATE, je nutné zadat hodnoty parametrů.Tyto hodnoty získá z kolekce Parameters odpovídajícího příkazu, v tomto případě objektu UpdateCommand v objektu TableAdapter.

Pokud jste pro generování datového adaptéru použili nástroje systému Visual Studio, objekt UpdateCommand bude obsahovat kolekci parametrů, které odpovídají každému zástupci parametru v tomto příkazu.

Vlastnost SqlParameter.SourceColumn každého parametru odkazuje na sloupec v tabulce dat.Například vlastnost SourceColumn pro parametry au_id a Original_au_id je nastavena na jakýkoli sloupec v tabulce dat obsahující id autora.Když je metoda Update adaptéru spuštěna, přečte sloupec s id autora aktualizovaného záznamu a vloží tyto hodnoty do příkazu.

V příkazu UPDATE je nutné zadat nové hodnoty (ty, které budou zapsány do záznamu) stejně jako původní hodnoty (aby aktualizovaný záznam mohl být v databázi nalezen).Proto existují dva parametry pro každou hodnotu, jeden pro klauzuli SET a jiný pro klauzuli WHERE.Oba parametry čtou data z aktualizovaného záznamu, ale dostanou různé verze hodnoty sloupce na základě parametru vlastnosti SqlParameter.SourceVersion.Parametr v klauzuli SET dostane aktuální verzi a parametr v klauzuli WHERE dostane původní verzi.

[!POZNÁMKA]

Také je možné nastavit hodnoty kolekce Parameters v kódu, což lze obvykle provést v obslužné rutině události RowChanging datového adaptéru.

Aktualizace souvisejících tabulek

Pokud datová sada obsahuje více tabulek, je nutné je aktualizovat samostatně voláním metody Update každého datového adaptéru odděleně.Pokud mají tabulky vztah nadřazený podřízený, je pravděpodobné, že bude nutné odeslat aktualizace do databáze v určitém pořadí.Běžným scénářem je, že jste přidali nadřazené a související podřízené záznamy do datové sady, například nový záznam zákazníka a jeden nebo více záznamů související objednávky.Pokud samotná databáze vynucuje pravidla relační integrity, vyvolá chyby při odeslání nových podřízených záznamů do databáze před vytvořením nadřazeného záznamu.

Naopak při odstranění souvisejících záznamů v datové sadě, je obvykle nutné odeslat aktualizace v obráceném pořadí, podřízené tabulky první, potom nadřazené tabulky.Jinak je pravděpodobné, že databáze vyvolá chybu, protože pravidla referenční integrity zabrání odstranění nadřazeného záznamu, zatímco stále existují související podřízené záznamy.

Obecné pravidlo pro odesílání aktualizací souvisejících tabulek je dodržovat toto pořadí:

  1. Podřízená tabulka: odstranění záznamů.

  2. Nadřazená tabulka: vložení, aktualizace a odstranění záznamů.

  3. Podřízená tabulka: vložení a aktualizace záznamů.

  4. Další informace naleznete v tématu Návod: Ukládání dat do databáze (více tabulek).

Kontrola souběžnosti

Protože jsou datové sady odpojeny od zdroje dat, není nutné držet zámky záznamů ve zdroji dat.Proto, pokud chcete aktualizovat databázi a je pro vaši aplikaci důležité zachování řízení souběžnosti, je nutné sloučit záznamy v datové sadě s těmi v databázi.Můžete například zjistit, že se záznamy v databázi od posledního naplnění datové sady změnily.V takovém případě je nutné pomocí vhodné aplikační logiky určit, co by mělo nastat se záznamem databáze nebo změněným záznamem, který máte v datové sadě.

Viz také

Úkoly

Postupy: Aktualizace dat pomocí TableAdapter

Koncepty

TableAdapter – přehled

Příprava vaší aplikace k příjmu dat

Načítání dat do vaší aplikace

Vázání ovládacích prvků k datům v sadě Visual Studio

Upravování dat ve vaší aplikaci

Ověřování dat

Ukládání dat

Další zdroje

Přehled datových aplikacích v sadě Visual Studio

Připojení k datům v sadě Visual Studio