Sdílet prostřednictvím


Návod: Jednoduchý objektový model a dotaz (Visual Basic)

Tento názorný postup poskytuje základní komplexní scénář LINQ to SQL s minimálními složitostmi. Vytvoříte třídu entity, která modeluje tabulku Customers v ukázkové databázi Northwind. Pak vytvoříte jednoduchý dotaz, který zobrazí seznam zákazníků, kteří se nacházejí v Londýně.

Tento názorný postup je orientovaný na kód, který umožňuje zobrazit koncepty LINQ to SQL. Normálně byste použili Návrhář relací objektů k vytvoření objektového modelu.

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 používá k uložení souborů vyhrazenou složku (c:\linqtest). Vytvořte tuto složku před zahájením návodu.

  • Tento názorný postup vyžaduje 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 do složky c:\linqtest.

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

  • Mapování třídy na tabulku databáze

  • Navrhování vlastností ve třídě tak, aby představovaly sloupce databáze.

  • Určuje připojení k databázi Northwind.

  • Vytvoření jednoduchého dotazu pro spuštění v databázi

  • Provedení dotazu a sledování výsledků

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

  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. Také v dialogovém okně Přidat odkaz klepněte na tlačítko .NET, posuňte se na položku System.Windows.Forms a klepněte na tlačítko OK.

    Toto sestavení, které podporuje pole zprávy v návodu, je přidáno do projektu.

  4. Přidejte výše Module1uvedené direktivy:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Windows.Forms
    
    

Mapování třídy na tabulku databáze

V tomto kroku vytvoříte třídu a namapujete ji na tabulku databáze. Taková třída je označena jako třída entity. Všimněte si, že mapování se provádí pouhým přidáním atributu TableAttribute . Vlastnost Name určuje název tabulky v databázi.

Vytvoření třídy entity a jeho mapování na tabulku databáze

  • Zadejte nebo vložte následující kód do Module1.vb bezprostředně nad Sub Main:

    <Table(Name:="Customers")> _
    Public Class Customer
    End Class
    

Navrhování vlastností ve třídě pro reprezentaci databázových sloupců

V tomto kroku provedete několik úkolů.

  • Atribut použijete ColumnAttribute k určení CustomerID a City vlastnostem třídy entity jako představující sloupce v tabulce databáze.

  • Vlastnost označíte CustomerID jako představující sloupec primárního klíče v databázi.

  • Určíte _CustomerID a _City pole pro privátní úložiště. LINQ to SQL pak může ukládat a načítat hodnoty přímo místo použití veřejných přístupových objektů, které můžou zahrnovat obchodní logiku.

Znázornění charakteristik dvou sloupců databáze

  • Zadejte nebo vložte následující kód do Module1.vb těsně před End Class:

    Private _CustomerID As String
    <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _
    Public Property CustomerID() As String
        Get
            Return Me._CustomerID
        End Get
        Set(ByVal value As String)
            Me._CustomerID = value
        End Set
    End Property
    
    Private _City As String
    <Column(Storage:="_City")> _
    Public Property City() As String
        Get
            Return Me._City
        End Get
        Set(ByVal value As String)
            Me._City = value
        End Set
    End Property
    

Určení Připojení ion do databáze Northwind

V tomto kroku pomocí objektu DataContext vytvoříte propojení mezi strukturami dat založenými na kódu a samotnou databází. Jedná se DataContext o hlavní kanál, prostřednictvím kterého načtete objekty z databáze a odešlete změny.

Deklarujete Table(Of Customer) také, že se bude chovat jako logická tabulka typu pro dotazy na tabulku Customers v databázi. Tyto dotazy vytvoříte a spustíte v dalších krocích.

Určení připojení k databázi

  • Do metody zadejte nebo vložte následující kód Sub Main .

    Všimněte si, že se předpokládá northwnd.mdf , že soubor je ve složce linqtest. Další informace najdete v části Požadavky uvedené výše v tomto názorném postupu.

    ' Use a connection string.
    Dim db As New DataContext _
        ("c:\linqtest\northwnd.mdf")
    
    ' Get a typed table to run queries.
    Dim Customers As Table(Of Customer) = _
        db.GetTable(Of Customer)()
    

Vytvoření jednoduchého dotazu

V tomto kroku vytvoříte dotaz, který vyhledá zákazníky v tabulce Zákazníci databáze v Londýně. Kód dotazu v tomto kroku pouze popisuje dotaz. Nespustí ho. Tento přístup se označuje jako odložené spuštění. Další informace najdete v tématu Úvod k dotazům LINQ (C#).

Vytvoříte také výstup protokolu, který zobrazí příkazy SQL, které LINQ to SQL generuje. Tato funkce protokolování (která používá Log) je užitečná při ladění a při určování, že příkazy odesílané do databáze přesně představují váš dotaz.

Vytvoření jednoduchého dotazu

  • Zadejte nebo vložte následující kód do Sub Main metody za Table(Of Customer) deklaraci:

    ' Attach the log to show generated SQL in a console window.
    db.Log = Console.Out
    
    ' Query for customers in London.
    Dim custQuery = _
        From cust In Customers _
        Where cust.City = "London" _
        Select cust
    

Spuštění dotazu

V tomto kroku dotaz skutečně spustíte. Výrazy dotazu, které jste vytvořili v předchozích krocích, se nevyhodnocují, dokud nebudou potřebné výsledky. Při zahájení For Each iterace se provede příkaz SQL pro databázi a objekty jsou materializovány.

Provedení dotazu

  1. Na konec Sub Main metody zadejte nebo vložte následující kód (za popis dotazu):

    ' Format the message box.
    Dim msg As String = "", title As String = "London customers:", _
        response As MsgBoxResult, style As MsgBoxStyle = _
        MsgBoxStyle.Information
    
    ' Execute the query.
    For Each custObj In custQuery
        msg &= String.Format(custObj.CustomerID & vbCrLf)
    Next
    
    ' Display the results.
    response = MsgBox(msg, style, title)
    
  2. Stisknutím klávesy F5 spusťte ladění aplikace.

    Poznámka:

    Pokud vaše aplikace generuje chybu za běhu, přečtěte si část Řešení potíží Učení podle návodů.

    V okně se zprávou se zobrazí seznam šesti zákazníků. V okně Konzola se zobrazí vygenerovaný kód SQL.

  3. Kliknutím na tlačítko OK zavřete okno se zprávou.

    Aplikace se zavře.

  4. V nabídce File (Soubor) klikněte na Save All (Uložit vše).

    Tuto aplikaci budete potřebovat, pokud budete pokračovat v dalším návodu.

Další kroky

Návod: Dotazování napříč relacemi (Visual Basic) pokračuje tam, kde tento návod končí. Názorný postup dotazování napříč relacemi ukazuje, jak může LINQ to SQL dotazovat napříč tabulkami, podobně jako spojení v relační databázi.

Pokud chcete provést názorný postup dotazování napříč relacemi, nezapomeňte uložit řešení pro právě dokončený návod, což je předpokladem.

Viz také