Návod: Manipulace s daty
Tento názorný postup poskytuje základní komplexní scénář LINQ to SQL pro přidávání, úpravy a odstraňování dat v databázi. Pomocí kopie ukázkové databáze Northwind přidáte zákazníka, změníte jméno zákazníka a odstraníte objednávku.
Poznámka:
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
Tento návod byl napsán pomocí vývojového Nastavení jazyka Visual C#.
Požadavky
Tento názorný postup vyžaduje následující:
Tento názorný postup používá k uložení souborů vyhrazenou složku (c:\linqtest6). Vytvořte tuto složku před zahájením návodu.
Ukázkovou databázi Northwind
Pokud tuto databázi nemáte na vývojovém počítači, můžete ji stáhnout z webu pro stažení microsoftu. Pokyny najdete v tématu Stažení ukázkových databází. Po stažení databáze zkopírujte soubor northwnd.mdf do složky c:\linqtest6.
Soubor kódu jazyka C# vygenerovaný z databáze Northwind.
Tento soubor můžete vygenerovat pomocí Návrhář relací objektů nebo nástroje SQLMetal. Tento návod byl napsán pomocí nástroje SQLMetal s následujícím příkazovým řádkem:
sqlmetal /code:"c:\linqtest6\northwind.cs" /language:csharp "C:\linqtest6\northwnd.mdf" /pluralize
Další informace najdete v tématu SqlMetal.exe (nástroj pro generování kódu).
Přehled
Tento názorný postup se skládá ze šesti hlavních úloh:
Vytvoření řešení LINQ to SQL v sadě Visual Studio
Přidání souboru kódu databáze do projektu
Vytvoření nového objektu zákazníka
Úprava jména kontaktu zákazníka
Odstranění objednávky
Odesílání těchto změn do databáze Northwind
Vytvoření řešení LINQ to SQL
V tomto prvním úkolu vytvoříte řešení sady Visual Studio, které obsahuje potřebné odkazy na sestavení a spuštění projektu LINQ to SQL.
Vytvoření řešení LINQ to SQL
V nabídce Soubor sady Visual Studio přejděte na příkaz Nový a klepněte na tlačítko Projekt.
V podokně Typy projektů v dialogovém okně Nový projekt klikněte na Visual C#.
V podokně Šablony klikněte na Konzolová aplikace.
Do pole Název zadejte LinqDataManipulationApp.
V poli Umístění ověřte, kam chcete ukládat soubory projektu.
Klikněte na OK.
Přidání odkazů a direktiv LINQ
Tento názorný postup používá sestavení, která nemusí být ve výchozím nastavení v projektu nainstalována. Pokud system.Data.Linq není v projektu uvedený jako odkaz, přidejte ho, jak je vysvětleno v následujících krocích:
Přidání System.Data.Linq
V Průzkumník řešení klepněte pravým tlačítkem myši Na odkazy a klepněte na tlačítko Přidat odkaz.
V dialogovém okně Přidat odkaz klepněte na tlačítko .NET, klepněte na system.Data.Linq sestavení a klepněte na tlačítko OK.
Sestavení se přidá do projektu.
Na začátek Program.cs přidejte následující direktivy:
using System.Data.Linq; using System.Data.Linq.Mapping;
Přidání souboru kódu Northwind do projektu
Tyto kroky předpokládají, že jste k vygenerování souboru kódu z ukázkové databáze Northwind použili nástroj SQLMetal. Další informace najdete v části Požadavky uvedené výše v tomto názorném postupu.
Přidání souboru kódu northwind do projektu
V nabídce Projekt klepněte na tlačítko Přidat existující položku.
V dialogovém okně Přidat existující položku přejděte na c:\linqtest6\northwind.cs a klepněte na tlačítko Přidat.
Do projektu se přidá soubor northwind.cs.
Nastavení Připojení databáze
Nejprve otestujte připojení k databázi. Všimněte si zejména, že databáze Northwnd nemá žádný znak i. Pokud v dalších krocích vygenerujete chyby, projděte si soubor northwind.cs a zjistěte, jak je napsaná částečná třída Northwind.
Nastavení a otestování připojení k databázi
Do metody ve
Main
třídě Program zadejte nebo vložte následující kód:// Use the following connection string. Northwnd db = new Northwnd(@"c:\linqtest6\northwnd.mdf"); // Keep the console window open after activity stops. Console.ReadLine();
Stisknutím klávesy F5 otestujte aplikaci v tomto okamžiku.
Otevře se okno konzoly .
Aplikaci můžete zavřít stisknutím klávesy Enter v okně konzoly nebo kliknutím na zastavit ladění v nabídce Ladění sady Visual Studio.
Vytvoření nové entity
Vytvoření nové entity je jednoduché. Objekty (například Customer
) můžete vytvořit pomocí klíčového new
slova.
V této a následující části provádíte změny pouze v místní mezipaměti. Do databáze se neposílají žádné změny, dokud nevoláte SubmitChanges na konec tohoto názorného postupu.
Přidání nového objektu entity Customer
Vytvořte nový
Customer
přidáním následujícího kódu předConsole.ReadLine();
metodouMain
:// Create the new Customer object. Customer newCust = new Customer(); newCust.CompanyName = "AdventureWorks Cafe"; newCust.CustomerID = "ADVCA"; // Add the customer to the Customers table. db.Customers.InsertOnSubmit(newCust); Console.WriteLine("\nCustomers matching CA before insert"); foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA"))) { Console.WriteLine("{0}, {1}, {2}", c.CustomerID, c.CompanyName, c.Orders.Count); }
Stisknutím klávesy F5 můžete řešení ladit.
Stisknutím klávesy Enter v okně konzoly zastavte ladění a pokračujte v návodu.
Aktualizace entity
V následujících krocích načtete Customer
objekt a upravíte jednu z jeho vlastností.
Změna názvu zákazníka
Přidejte následující kód výše
Console.ReadLine();
:// Query for specific customer. // First() returns one object rather than a collection. var existingCust = (from c in db.Customers where c.CustomerID == "ALFKI" select c) .First(); // Change the contact name of the customer. existingCust.ContactName = "New Contact";
Odstranění entity
Pomocí stejného objektu zákazníka můžete odstranit první objednávku.
Následující kód ukazuje, jak oddělit relace mezi řádky a jak odstranit řádek z databáze. Před přidáním následujícího kódu Console.ReadLine
zjistěte, jak lze objekty odstranit:
Odstranění řádku
Přidejte následující kód těsně nad
Console.ReadLine();
:// Access the first element in the Orders collection. Order ord0 = existingCust.Orders[0]; // Access the first element in the OrderDetails collection. OrderDetail detail0 = ord0.OrderDetails[0]; // Display the order to be deleted. Console.WriteLine ("The Order Detail to be deleted is: OrderID = {0}, ProductID = {1}", detail0.OrderID, detail0.ProductID); // Mark the Order Detail row for deletion from the database. db.OrderDetails.DeleteOnSubmit(detail0);
Odesílání změn do databáze
Posledním krokem potřebným k vytváření, aktualizaci a odstraňování objektů je skutečně odeslání změn do databáze. Bez tohoto kroku jsou změny pouze místní a nezobrazí se ve výsledcích dotazu.
Odeslání změn do databáze
Vložte následující kód těsně nad
Console.ReadLine
:db.SubmitChanges();
Vložte následující kód (za
SubmitChanges
), který zobrazí před a po efektech odeslání změn:Console.WriteLine("\nCustomers matching CA after update"); foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA"))) { Console.WriteLine("{0}, {1}, {2}", c.CustomerID, c.CompanyName, c.Orders.Count); }
Stisknutím klávesy F5 můžete řešení ladit.
Stisknutím klávesy Enter v okně konzoly aplikaci zavřete.
Poznámka:
Po přidání nového zákazníka odesláním změn nemůžete toto řešení spustit znovu, jak je. Pokud chcete řešení spustit znovu, změňte jméno zákazníka a ID zákazníka, které se má přidat.