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
V nabídce Soubor 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 LinqConsoleApp.
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.
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.
Přidejte výše
Module1
uvedené 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
aCity
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 zaTable(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
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)
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.
Kliknutím na tlačítko OK zavřete okno se zprávou.
Aplikace se zavře.
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.