Uložení dat v objektech DataSet
Ukládání dat je že proces stav změnit data v aplikaci zpět k původnímu úložišti dat, obvykle relační databáze, například SQL Server.
Protože objekt dataset je účinně mezipaměť – kopírování – dat, proces zápisu informací do původního zdroje dat je nezávisle na procesu úpravy dat v objektu dataset.Můžete odeslat aktualizovaná data v objektech DataSet zpět do databáze voláním jedné z Update metod TableAdapter, nebo voláním metody DBDirect TableAdapter.
Další informace o odesílání změn objekt DataSet zpět do databáze, viz Jak: aktualizace dat pomocí TableAdapter a Jak: Dataset změny uložit do databáze.
Visual Studio obsahuje TableAdapterManager součást, která usnadní provádění uloží při ukládání dat v tabulkách.Tato součást zajišťuje, že uloží jsou prováděny ve správném pořadí omezení cizího klíče v databázi definována na základě.Další informace naleznete v tématu Hierarchický přehled aktualizace.
Informace o úpravách dat v objektu dataset, viz Data v aplikaci pro úpravy.
Aktualizace dvoustupňový
Aktualizace zdroje dat pomocí objektu dataset je dvoustupňový proces.Prvním krokem je aktualizovat objekt dataset nových informací – nové záznamy, záznamy o změně nebo odstranění záznamů.Pokud aplikace se týká pouze dataset – například po aktualizaci objektu dataset, odešlete jej do jiné aplikace, která bude provádět další zpracování dataset – a po dokončení aktualizace.
[!POZNÁMKA]
V model Windows Forms architektura vázání dat zajišťuje odesílání změn z ovládací prvky vázané na data objektu dataset a není nutné explicitně aktualizovat objekt dataset s vlastním kódem.Další informace naleznete v tématu Model Windows Forms vázání dat.
Pokud aktualizujete zdroj dat (například databáze), druhým krokem je odeslat změny původního zdroje dat DataSet.To znamená, že proces aktualizace dataset také nezapisuje změny prostřednictvím zdroj podkladových dat; Tento druhý krok je třeba provést explicitně.Obvykle to můžete provést voláním metody Update stejné TableAdapter (nebo datový adaptér) používá k naplnění dataset, můžete také použít různé adaptéry, například přesunout data z jednoho zdroje dat nebo aktualizovat více zdrojů dat.
Proces aktualizace dvou etapách a role DataRowVersion v úspěšné aktualizaci
Strukturálně objekt dataset zpřístupní data jako sady kolekcí.Soubory obsahují kolekce tabulek.Tabulky obsahují kolekce řádků.Tabulky jsou vystaveny jako kolekci DataSet jsou k dispozici v objektu a záznamy Rows kolekce DataTable objektů.Provádění změn v objektu dataset jednoduše manipulací tyto kolekce dat pomocí metody základní kolekce je možné, ale pokud chcete aktualizovat podkladový zdroj dat, je nutné použít metody speciálně pro změnu objektu dataset.
Například odstranit záznamy z tabulky dat, můžete zavolat RemoveAt metody v tabulce Rows kolekci DataSet fyzicky odstraní záznam.Pokud používáte dataset pouze jako strukturované úložiště dat a nejsou o přenosu informace o změně do jiné aplikace, manipulaci s kolekcí tímto způsobem je přijatelný způsob aktualizace objektu dataset.
Však pokud máte v úmyslu odeslat změny zdroje dat nebo jiné aplikace, je nutné změnit informace (metadata) o každé aktualizaci.Později při odeslání změn do zdroje dat nebo aplikace proces bude mít informace, které potřebuje vyhledat a aktualizovat řádné záznamy.Například odstraníte záznam v objektu dataset, informace o odstraněný záznam má být zachován v objektu dataset.Tímto způsobem, kdy DeleteCommand z je vyvolána TableAdapter, není k dispozici dostatek historické informace vyhledejte původní záznam ve zdroji dat, mohou být odstraněny.Další informace naleznete v tématu "Udržování informací o změny" níže.
Slučování objektů DataSet
Můžete aktualizovat obsah dataset podle sloučení –, kopírování obsahu jednoho objektu dataset (jen zdroje dataset) do volající objekt dataset (jen cíl dataset).Při slučování objektů DataSet, jsou přidány nové záznamy v souboru zdroje dat do cílového objektu dataset.Navíc další sloupce v souboru zdroje dat do cílového objektu dataset.Slučování objektů DataSet je zvláště užitečné, pokud jste místní dataset a získat druhý objekt dataset z jiné aplikace nebo součásti, například webové služby XML.Je také užitečné, pokud potřebujete integrovat data z více objektů DataSet.
Při slučování objektů DataSet, můžete také předat nepovinný argument Boolean (preserveChanges), říká Merge metoda zda chcete zachovat stávající úpravy v cílovém objektu dataset.Protože soubory zachovat více verzí záznamů, je důležité mějte sloučení více než jednu verzi záznamy.Následující tabulka ukazuje dva soubory, které budou sloučeny záznamu:
DataRowVersion |
Cílový objekt dataset |
Zdrojový objekt dataset |
---|---|---|
Původní |
James Wilson |
James C.Wilson |
Aktuální |
Jan Wilson |
James C.Wilson |
Volání Merge metodu na výše uvedené tabulky s preserveChanges=false targetDataset.Merge(sourceDataset) výsledky následující:
DataRowVersion |
Cílový objekt dataset |
Zdrojový objekt dataset |
---|---|---|
Původní |
James C.Wilson |
James C.Wilson |
Aktuální |
James C.Wilson |
James C.Wilson |
Volání Merge metodou s preserveChanges = true targetDataset.Merge(sourceDataset, true) výsledky následující:
DataRowVersion |
Cílový objekt dataset |
Zdrojový objekt dataset |
---|---|---|
Původní |
James C.Wilson |
James C.Wilson |
Aktuální |
Jan Wilson |
James C.Wilson |
Upozornění |
---|
V preserveChanges = true scénář, pokud RejectChanges na záznam v cílovém objektu dataset je volána metoda a potom se vrátit k původní data z zdroje dataset.To znamená, že pokud se pokusíte aktualizovat původní zdroj dat cílového objektu dataset, nemusí být schopen nalézt původní řádek aktualizovat.Však můžete zabránit narušení souběžného zpracování vyplněním jinému objektu dataset s aktualizované záznamy ze zdroje dat a potom slučování zabrání narušení souběžného zpracování.(Narušení souběžného zpracování dojde, pokud jiný uživatel upraví záznam ve zdroji dat po naplnil dataset) |
Omezení aktualizace
Chcete-li změnit existující řádek dat, přidat nebo aktualizovat data v jednotlivých sloupcích.Pokud objekt dataset obsahuje omezení (například cizí klíče nebo omezení Structure), je možné, že při aktualizaci záznamu – po aktualizaci jednoho sloupce, ale před získat další – záznam může být dočasně v chybovém stavu.
Zabránit předčasné porušení může dočasně pozastavit omezení aktualizace.To má dva účely:
Chyba zabrání je vyvolána při aktualizaci jednoho sloupce před načíst do jiného sloupce.
Pozastaví jeho určité aktualizace události nebude aktivována (události, které se často používají pro ověření).
Po dokončení aktualizace můžete znovu povolit kontrolu omezení, která také znovu povolí události aktualizace a zvýší jejich.
[!POZNÁMKA]
V model Windows Forms architektura vázání dat vestavěné datagrid pozastaví omezení kontroly dokud přesune fokus z řádku a není nutné explicitně volat BeginEdit, EndEdit nebo CancelEdit metod.
Omezení jsou automaticky zakázáno, pokud Merge je volána metoda v objektu dataset.Po dokončení sloučení, pokud neexistují žádné omezení pro objekt dataset, který nelze povolit, klepněte ConstraintException je vyvolána.V takovém případě EnforceConstraints vlastnost false a všech porušení omezení musí být vyřešeny před obnovením EnforceConstraints vlastnost true.
Po dokončení aktualizace můžete znovu povolit kontrolu omezení, která také znovu povolí události aktualizace a zvýší jejich.
Další informace o pozastavení události, viz Jak: vypnutí omezení při vyplňování objektu Dataset.
Aktualizace objektu DataSet chyby
Při aktualizaci záznamu v objektu dataset je možnost chybu.Například může být neúmyslně zápisu dat na sloupec, který je typu nesprávná data nebo je příliš dlouhý, nebo má jiné problémy se integrity.Kromě toho mohou mít specifické pro aplikaci ověření kontroly, které jakékoli fázi události aktualizace může zvýšit vlastní chyby.Další informace naleznete v tématu Ověření dat v objektech DataSet.
Udržování informací o změnách
Informace o změnách v objektu dataset je zachována dvěma způsoby: pomocí příznaku na řádek, který označuje, zda byl změněn (RowState) a udržováním více kopií záznamu (DataRowVersion).Procesy pomocí těchto informací můžete určit, co se změnilo v objektu dataset a zdroj dat můžete odeslat příslušné aktualizace.
Vlastnost RowState
RowState Vlastnost DataRow je hodnota, která poskytuje informace o stavu konkrétního řádku dat objekt.
Následující tabulka uvádí možné hodnoty DataRowState výčtu:
Hodnota DataRowState |
Description |
---|---|
Byl přidán jako položka na řádku DataRowCollection.(Řádek v tomto stavu nemá odpovídající původní verze, protože neexistuje v době poslední AcceptChanges byla volána metoda). |
|
Řádek byl vytvořen, ale není součástí žádného DataRowCollection.A DataRow je objekt v tomto stavu okamžitě poté, co byla vytvořena a před přidáním do kolekce nebo pokud byla odebrána z kolekce. |
|
Byla změněna hodnota sloupce v řádku nějakým způsobem. |
|
Řádek nezměnil od AcceptChanges byla volána naposledy. |
Výčet DataRowVersion
Soubory udržovat více verzí záznamů.DataRowVersion Výčet DataRow objektu je hodnota, která slouží k vrácení konkrétní verze DataRow objektu.
Následující tabulka uvádí možné hodnoty DataRowVersion výčtu:
Hodnota DataRowVersion |
Description |
---|---|
Aktuální verze záznamu obsahuje všechny úpravy od posledního záznamu provést AcceptChanges byla volána.Pokud byl odstraněn řádek neexistuje žádná aktuální verze. |
|
Výchozí hodnota záznam podle definice schématu nebo datové zdroje dataset. |
|
Původní verze záznamu je kopie záznamu, jako byl, že poslední změny času byly potvrzeny v objektu dataset.V praxi toto je obvykle verze záznamu pro čtení ze zdroje dat. |
|
Navrhovaná verze záznamu, který je k dispozici dočasně, v době, kdy probíhá aktualizace –, mezi časem zavolali BeginEdit metoda a EndEdit metoda.Obvykle se navrhovaná verze záznamu v obslužné rutině události jako RowChanging.Vyvolání CancelEdit metoda vrátí zpět změny a odstraní navrhovaná verze datový řádek. |
Původní a aktuální verze jsou užitečné, pokud zdroj dat předány informace o aktualizaci.Po odeslání aktualizace zdroje dat nové informace databáze je 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ě, kde je primární klíč záznamu změnili, musí mít způsob, jak najít odpovídající záznam ve zdroji dat aktualizovat změny.Pokud není původní verze existovaly, pak záznam by pravděpodobně připojen ke zdroji dat vyplývají pouze extra nežádoucí záznamu, ale v jednom záznamu, který je zastaralý a nepřesné.Dvě verze používají také v řízení souběžnosti; můžete porovnat původní verze proti záznam ve zdroji dat k určení, pokud záznam byl změněn byl načten do objektu dataset.
Navrhovaná verze je užitečné, pokud potřebujete provést ověření před skutečně potvrzením změny do objektu dataset.
I v případě, že jste změnili záznamy, nejsou vždy původní nebo aktuální verze tohoto řádku.Při vložení nového řádku do tabulky není žádný původní verze aktuální verze.Podobně odstranit řádek v tabulce vyvoláním Delete metodou, je původní verze, ale žádná aktuální verze.
Pokud existuje konkrétní verzi záznamu pomocí dotazu datový řádek můžete otestovat HasVersion metoda.Předáním lze přístup buď verzi záznamu DataRowVersion hodnota výčtu jako volitelný argument při požadavku na hodnotu sloupce.
Získávání změněných záznamů
Je běžné aktualizaci všech záznamů v objektu dataset.Uživatel může například pracovat s model Windows Forms DataGridView ovládací prvek, který zobrazuje mnoho záznamů.Však uživatel může aktualizovat pouze několik záznamů, odstranit a vložit nový.Soubory a data tabulky poskytují metodu (GetChanges) pro vrácení pouze řádky, které byly změněny.
Můžete vytvořit dílčí změněných záznamů pomocí GetChanges metoda tabulku dat (GetChanges) nebo objektu DataSet (GetChanges) sám.Pokud volání metody pro tabulku dat vrátí kopii tabulky se pouze změněné záznamy.Podobně pokud volání metody objektu dataset na získáte nové dataset s pouze změněné záznamy v ní.GetChangessamotný vrátí všechny změněné záznamy.Naopak předáním požadované DataRowState jako parametr GetChanges metodu, můžete určit která podmnožina změněných záznamů chcete: nově přidané záznamy označeny k odstranění záznamů odpojili záznamy nebo změněné záznamy.
Získání podmnožinu změněných záznamů je zvláště užitečná, když chcete poslat další součást pro zpracování záznamů.Režijní náklady na komunikaci s jinou součást získáním pouze záznamy, které potřebuje komponenty můžete snížit neodesílá celý objekt dataset.Další informace naleznete v tématu Jak: načtení změněny řádky.
Potvrzování změn v objektu Dataset
Jakmile jsou změny v objektu dataset, RowState vlastnost změněných řádků.Původní a aktuální verze záznamů stanoveny a udržovány a pro vás k dispozici RowVersion vlastnost.Metadata uložená v těchto vlastnostech představující změny je třeba odesílat správné aktualizace zdroje dat.
Pokud změny odrážel aktuální stav zdroje dat, již není nutné udržovat tyto informace.Obvykle jsou dvakrát dataset a jeho zdrojem při synchronizace údaji:
Ihned po načtený informace do sady dat, například při čtení dat ze zdroje.
Po odeslání změn do zdroje dat DataSet (ale ne dříve než, protože by ztratit změnit informace potřebné pro odeslání změn do databáze).
Čekající změny lze potvrdit dataset voláním AcceptChanges metoda.Obvykle se AcceptChanges by nazývá v následující dobu vaší aplikace.
Po načtený objekt dataset.Načtení objektu dataset voláním TableAdapter Fill metoda pak adaptéru můžete automaticky potvrzení změny.Však při načítání objektu dataset sloučením jinému objektu dataset do něj, budete muset ručně potvrdit změny.
[!POZNÁMKA]
Můžete zabránit adaptéru automaticky potvrzování změn při volání Fill metoda nastavením AcceptChangesDuringFill vlastností adaptéru false.Pokud je nastaven na false, pak bude RowState každého řádku vložen během výplň je nastavena na Added.
Poté, co jste odeslali změny dataset s jiným procesem, například webové služby XML.
Upozornění Tímto způsobem potvrzením změny vymaže všechny informace o změně.Není vhodné potvrdit změny až po všechny operace, které aplikace závisí na znalosti, jaké změny byly provedeny v objektu dataset.
Tato metoda provede následující:
AcceptChanges Metoda je k dispozici na třech úrovních.Volání na DataRow objektu, který potvrdí změny pouze daného řádku.Můžete ji také volat na DataTable potvrdit všechny řádky v tabulce nebo na objekt DataSet objektu potvrdit všechny čekající změny ve všech záznamech všechny tabulky objektu dataset.
Následující tabulka popisuje, které změny jsou odhodlány na co objekt že je volána metoda na základě.
Metoda |
Výsledek |
---|---|
Změny se zavázaly pouze na určitý řádek |
|
Změny se zavázaly na všech řádcích v určité tabulce. |
|
Změny jsou spáchány na všechny řádky ve všech tabulkách dataset |
[!POZNÁMKA]
Načtení objektu dataset voláním TableAdapter Fill metodou, nemáte výslovně přijmout změny; ve výchozím nastavení Fill volání metody AcceptChanges způsob vyplnění tabulky data dokončení.
Související metodu RejectChanges, vrátí zpět změny zkopírováním Original zpět do verze Current verze záznamů a nastavení RowState z každého záznamu zpět Unchanged.
Ověření dat
Pro ověření, že data v aplikaci splňuje požadavky procesů, které je předáno, je často nutné přidat ověření.To může zahrnovat kontrolu, že vstup uživatele ve formuláři je správné ověření dat odeslaných do aplikace jinou aplikací nebo dokonce kontrola vypočtené informace uvnitř komponent spadá do omezení dat a požadavků na zdroje a aplikace.
Můžete ověřit data v několika způsoby:
Ve vrstvě obchodní přidáním kódu do aplikace ověřovat data.Objekt dataset je jedno místo lze provést.Objekt dataset nabízí některé výhody ověření back-end – například možnost ověřit změny, jako jsou změny hodnoty sloupců a řádků.Další informace naleznete v tématu Ověření dat v objektech DataSet.
Ve vrstvě prezentaci přidáním ověření formulářů.Další informace naleznete v tématu Ověřování vstupu uživatele v model Windows Forms.
Data zálohovat účelem odesílání dat do zdroje dat, například databáze – a jeho přijetí nebo odmítnutí data.Pokud pracujete s databází, který má sofistikované zařízení pro ověření dat a poskytuje informace o chybě, může to být praktické přístup protože můžete ověřit data bez ohledu na to, odkud pocházejí z.Nemusí však přizpůsobit požadavky specifické pro aplikaci ověření.Navíc s ověření dat zdroj dat může způsobit četné round trips ke zdroji dat v závislosti na způsobu aplikace usnadňuje řešení chyb ověření vznesené back-end.
Poznámka k zabezpečení Při použití příkazů dat s CommandType vlastnost nastavena na hodnotu Text, pečlivě zkontrolujte informace odeslané z klienta před předáním do databáze.Uživatelé se zlými úmysly může pokusit odeslat (nastříkne) změněny nebo další příkazy SQL ve snaze o získání neoprávněného přístupu nebo poškození databáze.Před přenosem vstup do databáze vždy ověřte, že informace je platná. je nejvhodnější používat parametrizované dotazy nebo uložené procedury, pokud je to možné.Další informace naleznete v tématu Script Exploits Overview.
Po provedení změny v objektu dataset může přenést změny zdroje dat.Nejčastěji to provést voláním Update metody TableAdapter (nebo datový adaptér).Metoda smyčky přes každý záznam v tabulce dat s Určuje, jaký typ aktualizace je požadováno (aktualizace, vložení nebo odstranění), pokud existuje a poté spustí příslušný příkaz.
Jak aktualizace je přenesen na zdroj dat
Jako příklad jak aktualizuje Předpokládejme, že aplikace používá objekt dataset, obsahující jedinou datovou tabulku.Aplikace bude načítat dva řádky z databáze.Po načtení tabulky dat v paměti vypadá takto:
(RowState) CustomerID Name Status
(Unchanged) c200 Robert Lyon Good
(Unchanged) c400 Nancy Buchanan Pending
Aplikace změní stav Petr Novák "Preferovaný." V důsledku této změny hodnoty RowState vlastnost řádku změní z Unchanged na Modified.Hodnota RowState vlastnost pro první řádek zůstane Unchanged.Tabulka dat nyní vypadá takto:
(RowState) CustomerID Name Status
(Unchanged) c200 Robert Lyon Good
(Modified) c400 Nancy Buchanan Preferred
Aplikace je nyní volání Update metoda přenosu dataset v databázi.Metoda zase zkontroluje každý řádek.Pro první řádek metody nepřenáší žádný příkaz SQL v databázi, protože řádku nebyl změněn, protože byl původně načteny z databáze.
Pro druhý řádek však Update metoda automaticky vyvolá příkaz správná data a přenáší do databáze.Specifické syntaxe příkazu SQL závisí na dialekt SQL podporuje základní úložiště.Ale jsou pozoruhodné následující obecné vlastnosti předávaných příkazu SQL:
Je předávaných příkazu SQL příkazu UPDATE.Adaptér zná použít příkaz UPDATE, protože hodnota RowState vlastnost je Modified.
Přenášené příkaz SQL obsahuje klauzuli WHERE označující, že je cílový příkaz UPDATE řádek jehož CustomerID = 'c400'.Cílový řádek tuto část příkazu SELECT odlišuje od všech ostatních, protože CustomerID je primárního klíče v cílové tabulce.Informace pro klauzuli WHERE je odvozena z původní verze záznamu (DataRowVersion.Original), v případě, že byly změněny hodnoty požadované k identifikaci řádku.
Přenášené příkaz SQL obsahuje klauzule SET nastavte nové hodnoty upravené sloupce.
[!POZNÁMKA]
Pokud TableAdapter UpdateCommand byla nastavena vlastnost název uložené procedury, adaptér není vytvořit příkaz SQL.Místo toho vyvolá uložené procedury s příslušnými parametry předány.
Předávání parametrů
Záznamy, které mají být aktualizovány v databázi jsou obvykle předány parametry.Když TableAdapter Update spustí metodu příkazu UPDATE, je třeba zadat hodnoty parametru.Získá-li tyto hodnoty z Parameters kolekce dat odpovídající příkaz – v tomto případě UpdateCommand objektu TableAdapter.
Pokud jste použili nástroje Visual Studio generování datový adaptér UpdateCommand objektu bude obsahovat shromažďování parametrů, které odpovídají každý zástupný parametr v příkazu.
SqlParameter.SourceColumn Vlastnost každý parametr odkazuje na sloupec v tabulce dat.Například SourceColumn vlastnost au_id a Original_au_id parametry nastaveno na jakékoli sloupec v tabulce dat obsahuje id autora.Když adaptéru Update spustí metodu přečte Autor sloupec id ze záznamu aktualizované a zadá hodnoty do příkazu.
V příkazu UPDATE musíte zadat i nové hodnoty (ty, které budou zapsány do záznamu) stejně jako původní hodnoty (tak, aby aktualizace záznamu může být umístěn v databázi).Proto existují dva parametry pro každou hodnotu: jeden pro klauzule SET a jinou klauzuli WHERE.Oba parametry číst data ze záznamu aktualizovány, ale dostanou různé verze na základě tohoto parametru hodnotu ve sloupci SqlParameter.SourceVersion vlastnost.Parametr klauzule SET získá aktuální verzi a parametr klauzuli WHERE získá původní verze.
[!POZNÁMKA]
Můžete také nastavit hodnoty Parameters kolekce sami v kódu, které by obvykle nemají v obslužné rutiny události pro datový adaptér RowChanging událostí.
Aktualizace souvisejících tabulek
Pokud vaše dataset obsahuje více tabulek, musíte aktualizovat samostatně pomocí volání Update metoda každý datový adaptér odděleně.Pokud tabulky mají vztah nadřazený podřízený, je pravděpodobné, že budete mít k odesílání aktualizací databáze v určitém pořadí.Běžný scénář je, že jste přidali nadřazené a podřízené související záznamy na třídu dataset – například nový záznam zákazníka a jeden nebo více záznamů související objednávky.Pokud samotné databáze je prosazování pravidel relační integrity, pak ji zvýší chyby při odeslání nové podřízené záznamy do databáze před nadřazený záznam byl vytvořen.
Naopak, odstranění souvisejících záznamů v objektu dataset obecně máte odeslat aktualizace v obráceném pořadí: podřízené tabulky první, pak nadřazené tabulky.Jinak by mohly zvýšit chybu, protože pravidla referenční integrity zabrání odstranění nadřazený záznam, zatímco stále existovat souvisejícím podřízeným záznamům databáze.
Obecně pro odesílání aktualizací pro související tabulky je toto pořadí:
Podřízené tabulky: odstraňování záznamů.
Nadřazená tabulka: vložení, aktualizaci a odstraňování záznamů.
Podřízená tabulka: vkládání a aktualizace záznamů.
Další informace naleznete v tématu Názorný postup: Ukládání dat do databáze (více tabulek).
Kontrola souběžnosti
Protože soubory jsou odpojeny ze zdroje dat, není držitelem zámky záznamy ve zdroji dat.Pokud chcete aktualizovat databázi a je důležité udržovat řízení souběžnosti aplikace, proto musí odsouhlasit záznamy se v databázi v objektu dataset.Můžete například zjistit, že záznamy v databázi byly změněny od poslední vyplnění objektu dataset.V takovém případě je třeba spustit logiku aplikace vhodné určit, co by mělo nastat záznamu v databázi nebo změněného záznamu, který máte ve vaší dataset.
Viz také
Úkoly
Jak: aktualizace dat pomocí TableAdapter
Koncepty
Příprava aplikace pro příjem dat.
Ovládací prvky vazby na Data v aplikaci Visual Studio