Sdílet prostřednictvím


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

  1. V nabídce Soubor sady Visual Studio klepněte na tlačítko Nový projekt.

  2. V podokně Typy projektů v dialogovém okně Nový projekt klepněte na položku Visual Basic.

  3. V podokně Šablony klikněte na Konzolová aplikace.

  4. Do pole Název zadejte LinqDataManipulationApp.

  5. 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

  1. 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.

  2. 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.

  3. 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

  1. V nabídce Projekt klepněte na tlačítko Přidat existující položku.

  2. 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

  1. 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()
    
  2. 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

  1. Vytvořte nový Customer přidáním následujícího kódu před Console.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
    
  2. 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.

  3. 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

  1. Vložte následující kód těsně nad Console.ReadLine:

    db.SubmitChanges()
    
  2. 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
    
  3. 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  
    
  4. 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.

Viz také