Návod: Manipulace s daty (Visual Basic)
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 Basic.
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:\linqtest2). 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:\linqtest2.
Soubor kódu jazyka Visual Basic 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:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\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 klepněte na tlačítko Nový projekt.
V podokně Typy projektů v dialogovém okně Nový projekt klepněte na položku Visual Basic.
V podokně Šablony klikněte na Konzolová aplikace.
Do pole Název zadejte LinqDataManipulationApp.
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
v projektu není uvedený jako odkaz (klikněte na Zobrazit všechny soubory v Průzkumník řešení a rozbalte uzel Reference), 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.
V editoru kódu přidejte následující direktivy nad Module1:
Imports System.Data.Linq Imports 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:\linqtest2\northwind.vb a klepněte na tlačítko Přidat.
Do projektu se přidá soubor northwind.vb.
Nastavení Připojení databáze
Nejprve otestujte připojení k databázi. Všimněte si zejména, že název databáze Northwnd nemá žádný znak i. Pokud v dalších krocích vygenerujete chyby, projděte si soubor northwind.vb a zjistěte, jak je napsaná částečná třída Northwind.
Nastavení a otestování připojení k databázi
Zadejte nebo vložte následující kód do
Sub Main
:' Use a connection string, but connect to ' the temporary copy of the database. Dim db As New Northwnd _ ("C:\linqtest2\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 .
Zavřete aplikaci 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
následujícím kódem:Sub Main
' Create the new Customer object. Dim newCust As New Customer() newCust.CompanyName = "AdventureWorks Cafe" newCust.CustomerID = "A3VCA" ' Add the customer to the Customers table. db.Customers.InsertOnSubmit(newCust) Console.WriteLine("Customers matching CA before insert:") Dim custQuery = _ From cust In db.Customers _ Where cust.CustomerID.Contains("CA") _ Select cust For Each cust In custQuery Console.WriteLine("Customer ID: " & cust.CustomerID) Next
Stisknutím klávesy F5 můžete řešení ladit.
Výsledky zobrazené v okně konzoly jsou následující:
Customers matching CA before insert:
Customer ID: CACTU
Customer ID: RICAR
Všimněte si, že nový řádek se ve výsledcích nezobrazí. Nová data ještě nebyla odeslána do databáze.
Ladění zastavíte stisknutím klávesy Enter v okně konzoly .
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()
:Dim existingCust = _ (From cust In db.Customers _ Where cust.CustomerID = "ALFKI" _ Select cust).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.
Odstranění řádku
Přidejte následující kód těsně nad
Console.ReadLine()
:' Access the first element in the Orders collection. Dim ord0 As Order = existingCust.Orders(0) ' Access the first element in the OrderDetails collection. Dim detail0 As OrderDetail = ord0.OrderDetails(0) ' Display the order to be deleted. Console.WriteLine _ (vbCrLf & "The Order Detail to be deleted is: OrderID = " _ & detail0.OrderID) ' 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 vytvoření, aktualizaci a odstranění objektů je skutečně odeslat změny 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(vbCrLf & "Customers matching CA after update:") Dim finalQuery = _ From cust In db.Customers _ Where cust.CustomerID.Contains("CA") _ Select cust For Each cust In finalQuery Console.WriteLine("Customer ID: " & cust.CustomerID) Next
Stisknutím klávesy F5 můžete řešení ladit.
Okno konzoly se zobrazí takto:
Customers matching CA before update: Customer ID: CACTU Customer ID: RICAR The Order Detail to be deleted is: OrderID = 10643 Customers matching CA after update: Customer ID: A3VCA Customer ID: CACTU Customer ID: RICAR
Ladění zastavíte stisknutím klávesy Enter v okně konzoly .
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, protože nemůžete znovu přidat stejného zákazníka, jak je. Pokud chcete řešení spustit znovu, změňte hodnotu ID zákazníka, které se má přidat.