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í.
Nástroje LINQ to SQL v sadě Visual Studio poskytují vizuální návrhovou plochu pro vytváření a úpravy tříd LINQ to SQL (tříd entit), které jsou založené na objektech v databázi. Pomocí LINQ to SQL můžete k přístupu k databázím SQL použít technologii LINQ. Další informace naleznete v tématu LINQ (Language Integrated Query).
Modul runtime LINQ to SQL ve výchozím nastavení poskytuje logiku pro provádění aktualizací. Modul runtime vytvoří výchozí Insert, Updatea Delete příkazy založené na schématu tabulky (definice sloupců a informace o primárním klíči). Pokud nechcete používat výchozí chování, můžete nakonfigurovat chování aktualizace a určit konkrétní uložené procedury pro provádění potřebných vložení, aktualizací a odstranění potřebných pro práci s daty v databázi. Také to můžete udělat, když se negeneruje standardní chování, například když vaše třídy entit jsou mapovány na zobrazení. Kromě toho můžete přepsat výchozí chování aktualizace, když databáze vyžaduje přístup k tabulce prostřednictvím uložených procedur. Další informace naleznete v tématu Přizpůsobení operací pomocí uložených procedur.
Poznámka:
Tento návod vyžaduje dostupnost uložených procedur InsertCustomer, UpdateCustomer a DeleteCustomer pro databázi Northwind.
Tento názorný postup obsahuje kroky, které je třeba provést k přepsání výchozího chování LINQ to SQL runtime pro ukládání dat zpět do databáze pomocí uložených procedur.
Během tohoto názorného postupu se dozvíte, jak provádět následující úlohy:
Vytvořte novou aplikaci Windows Forms a přidejte do ní soubor LINQ to SQL.
Vytvořte třídu entity, která je namapovaná na tabulku Northwind
Customers.Vytvořte datový zdroj objektu, který odkazuje na třídu LINQ to SQL
Customer.Vytvořte formulář Windows, který obsahuje DataGridView, jež je svázán s třídou
Customer.Implementujte funkci ukládání formuláře.
Vytvořte DataContext metody přidáním uložených procedur do Návrháře relací objektů.
CustomerNakonfigurujte třídu tak, aby používala uložené procedury k provádění vkládání, aktualizací a odstraňování.
Požadavky
Tento názorný postup používá SQL Server Express LocalDB a ukázkovou databázi Northwind.
Pokud nemáte SQL Server Express LocalDB, nainstalujte ho buď ze stránky pro stažení SQL Serveru Express, nebo prostřednictvím instalačního programu sady Visual Studio. V instalačním programu sady Visual Studiomůžete SQL Server Express LocalDB nainstalovat jako součást ukládání a zpracování dat úlohy nebo jako jednotlivou komponentu.
Následujícím postupem nainstalujte ukázkovou databázi Northwind:
V sadě Visual Studio otevřete okno Průzkumník objektů SQL Serveru. (Průzkumník objektů SQL Serveru se instaluje jako součást úlohy ukládání a zpracování dat v instalačním programu sady Visual Studio.) Rozbalte uzel SQL Serveru . Klikněte pravým tlačítkem na instanci LocalDB a vyberte Nový dotaz.
Otevře se okno editoru dotazů.
Zkopírujte skript Northwind Transact-SQL do vaší schránky. Tento skript T-SQL vytvoří zcela novou databázi Northwind a naplní ji daty.
Vložte skript T-SQL do editoru dotazů a pak zvolte tlačítko Spustit.
Po krátké době se dotaz dokončí a vytvoří se databáze Northwind.
Vytvoření aplikace a přidání LINQ do tříd SQL
Vzhledem k tomu, že pracujete s třídami LINQ to SQL a zobrazujete data ve formuláři Windows, vytvořte novou aplikaci Windows Forms a přidejte soubor tříd LINQ to SQL.
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í nového projektu aplikace Windows Forms, který obsahuje třídy LINQ to SQL
V sadě Visual Studio v nabídce Soubor vyberte Nový>projekt.
V levém podokně rozbalte Visual C# nebo Visual Basic a pak vyberte Windows Desktop.
V prostředním podokně vyberte typ projektu aplikace Windows Forms .
Pojmenujte projekt UpdatingWithSProcsWalkthrough a pak zvolte OK.
Vytvoří se projekt UpdatingWithSProcsWalkthrough a přidá se do Průzkumníka řešení.
V nabídce Project klikněte na Přidat novou položku.
Klikněte na šablonu tříd LINQ to SQL a do pole Název zadejte Northwind.dbml.
Klikněte na tlačítko Přidat.
Do projektu se přidá prázdný soubor TŘÍD LINQ to SQL (Northwind.dbml) a otevře se Návrhář relací objektů .
Vytvořte třídu entity zákazníka a zdroj dat objektu
Vytvořte třídy LINQ to SQL mapované na databázové tabulky přetažením tabulek z Průzkumníka serveru nebo Průzkumníka databáze do Návrháře relací objektů. Výsledkem jsou třídy entit LINQ to SQL, které se mapují na tabulky v databázi. Po vytvoření tříd entit je možné je použít jako zdroje dat objektů stejně jako jiné třídy, které mají veřejné vlastnosti.
Vytvoření třídy entity Customer a konfigurace zdroje dat s ní
V Průzkumníku serveru nebo Průzkumníku databáze vyhledejte tabulku Customer ve verzi SQL Serveru ukázkové databáze Northwind.
Přetáhněte uzel Zákazníci z Průzkumníka serveru nebo Průzkumníka databáze na plochu *O/R Designeru .
Vytvoří se třída entity s názvem Customer . Má vlastnosti, které odpovídají sloupcům v tabulce Customers. Třída entity má název Customer (nikoli Customers), protože představuje jednoho zákazníka z tabulky Customers.
Poznámka:
Toto chování přejmenování se nazývá pluralizace. Můžete ho zapnout nebo vypnout v dialogovém okně Možnosti. Další informace naleznete v tématu Postupy: Zapnutí a vypnutí pluralizace (Návrhář relací objektů).
V nabídce Sestavení klepněte na Build UpdatingwithSProcsWalkthrough pro sestavení projektu.
Pokud chcete otevřít okno Zdroje dat , v nabídce Data klikněte na Zobrazit zdroje dat.
V okně Zdroje dat klikněte na Přidat nový zdroj dat.
Na stránce Zvolit typ zdroje dat klikněte na objekt a pak vyberte Další.
Rozbalte uzel UpdatingwithSProcsWalkthrough a vyhledejte a vyberte třídu Customer .
Poznámka:
Pokud není třída Zákazník k dispozici, zrušte průvodce, sestavte projekt a spusťte průvodce znovu.
Kliknutím na tlačítko Dokončit vytvoříte zdroj dat a přidáte třídu entity Customer do okna Zdroje dat .
Vytvoření DataGridView pro zobrazení zákaznických dat ve formuláři Windows Form
Vytvořte ovládací prvky vázané na třídy entit přetažením položek zdroje dat LINQ to SQL z okna Zdroje dat do formuláře Windows.
Přidání ovládacích prvků, které jsou svázané s třídami entit
Otevřete Form1 v návrhovém zobrazení.
Z okna Zdroje dat přetáhněte uzel Zákazník do formuláře Form1.
Poznámka:
Chcete-li zobrazit okno Zdroje dat , klepněte na tlačítko Zobrazit zdroje dat v nabídce Data .
Otevřete formulář 1 v editoru kódu.
Přidejte následující kód do formuláře, globálně pro formulář, mimo jakoukoli konkrétní metodu, ale uvnitř třídy
Form1.Vytvořte obslužnou rutinu pro událost
Form_Loada přidejte do ní následující kód:
Implementace funkcí ukládání
Ve výchozím nastavení není tlačítko Uložit povolené a funkce pro uložení se neimplementuje. Kromě toho se kód nepřidá automaticky pro ukládání změněných dat do databáze při vytváření ovládacích prvků vázaných na data pro zdroje dat objektů. Tato část vysvětluje, jak povolit tlačítko Uložit a implementovat funkce ukládání pro objekty LINQ to SQL.
Implementace funkce ukládání
Otevřete Form1 v návrhovém zobrazení.
Vyberte tlačítko Uložit na CustomerBindingNavigator (tlačítko s ikonou diskety).
V okně Vlastnosti nastavte povolenou vlastnost na Hodnotu True.
Poklikáním na tlačítko Uložit vytvořte obslužnou rutinu události a přepněte do Editoru kódu.
Do obslužné rutiny události pro tlačítko Uložit přidejte následující kód:
Přepsat výchozí chování při provádění aktualizací (vložení, aktualizace a odstranění)
Pokud chcete přepsat výchozí chování aktualizace
Otevřete soubor LINQ to SQL v Návrháři relací objektů. (Poklikejte na soubor Northwind.dbml v Průzkumníku řešení.)
V Průzkumníku serveru nebo Průzkumníku databáze rozbalte uzel Uložené procedury Northwind a vyhledejte uložené procedury InsertCustomers, UpdateCustomers a DeleteCustomers .
Přetáhněte všechny tři uložené procedury do Návrháře relací objektů.
Uložené procedury se přidají do podokna metod jako DataContext metody. Další informace naleznete v tématu Metody DataContext (O/R Designer).
Vyberte třídu entity Customer v Návrháři relací objektů.
V okně Vlastnosti vyberte vlastnost Vložit .
Klikněte na ellipsu (...) vedle Použít modul runtime, čímž otevřete dialogové okno Konfigurovat chování.
Vyberte Přizpůsobit.
V seznamu Customize vyberte metodu InsertCustomers.
Kliknutím na Tlačítko Použít uložíte konfiguraci pro vybranou třídu a chování.
Poznámka:
Chování pro každou kombinaci tříd a chování můžete dál konfigurovat, pokud po provedení každé změny kliknete na Tlačítko Použít . Pokud změníte třídu nebo chování před kliknutím na tlačítko Použít, zobrazí se dialogové okno upozornění s možností použít všechny změny.
V seznamu Chování vyberte Aktualizovat.
Vyberte Přizpůsobit.
V seznamu Přizpůsobit vyberte metodu UpdateCustomers.
Prohlédněte si seznam argumentů metody a vlastností třídy a všimněte si, že existují dva argumenty metody a dvě vlastnosti třídy pro některé sloupce v tabulce. To usnadňuje sledování změn a vytváření příkazů, které kontrolují porušení souběžnosti.
Namapujte argument metody Original_CustomerID na vlastnost CustomerID (Original).
Poznámka:
Ve výchozím nastavení argumenty metody odpovídají vlastnostem třídy, když se jejich názvy shodují. Pokud se názvy vlastností změní a nebudou se shodovat s tabulkou a třídou entity, budete možná muset vybrat ekvivalentní vlastnost třídy, na kterou se má namapovat, pokud Návrhář relací nemůže určit správné mapování. Kromě toho pokud argumenty metody nemají platné vlastnosti třídy, na které by bylo možné mapovat, můžete nastavit hodnotu Vlastnosti třídy na (None).
Kliknutím na Tlačítko Použít uložíte konfiguraci pro vybranou třídu a chování.
V seznamu Chování vyberte Odstranit.
Vyberte Přizpůsobit.
V seznamu Customize vyberte metodu DeleteCustomers.
Namapujte argument metody Original_CustomerID na vlastnost CustomerID (Original).
Klikněte na OK.
Poznámka:
Ačkoli to není problém pro tento konkrétní návod, stojí za zmínku, že LINQ to SQL automaticky zpracovává hodnoty generované databází pro sloupce s vlastností identity (automatické navýšení), rowguidcol (databázově generovaný globálně jedinečný identifikátor (GUID)) a časové razítko během vkládání a aktualizací. Hodnoty generované databází v jiných typech sloupců neočekávaně způsobí hodnotu null. Chcete-li vrátit hodnoty generované databází, měli byste ručně nastavit IsDbGeneratedtrue a AutoSync na jednu z následujících hodnot: AutoSync.Always, AutoSync.OnInsert nebo AutoSync.OnUpdate.
Otestování aplikace
Spusťte aplikaci znovu a ověřte, že uložená procedura UpdateCustomers správně aktualizuje záznam zákazníka v databázi.
Stiskněte klávesu F5.
Upravte záznam v mřížce a otestujte chování aktualizace.
Přidejte nový záznam pro otestování, jak vkládání funguje.
Kliknutím na tlačítko Uložit uložte změny zpět do databáze.
Zavřete formulář.
Stiskněte klávesu F5 a ověřte, že aktualizovaný záznam a nově vložený záznam zůstal zachován.
Odstraňte nový záznam, který jste vytvořili v kroku 3, a otestujte chování odstranění.
Kliknutím na tlačítko Uložit odešlete změny a odeberete odstraněný záznam z databáze.
Zavřete formulář.
Stiskněte klávesu F5 a ověřte, že byl odstraněný záznam z databáze.
Poznámka:
Pokud vaše aplikace používá SQL Server Express Edition v závislosti na hodnotě vlastnosti Kopírovat do výstupního adresáře souboru databáze, změny se nemusí zobrazit, když stisknete klávesu F5 v kroku 10.
Další kroky
V závislosti na požadavcích vaší aplikace můžete po vytvoření tříd entit LINQ to SQL provést několika kroky. Mezi vylepšení, která můžete v této aplikaci provést, patří:
Implementujte kontrolu souběžnosti během aktualizací. Informace najdete v tématu Optimistická souběžnost: přehled.
Přidejte dotazy LINQ pro filtrování dat. Informace najdete v tématu Úvod k dotazům LINQ (C#).