Przewodnik: Prosty model obiektu i zapytanie (Visual Basic)
Ten przewodnik zawiera podstawowy kompleksowy scenariusz LINQ to SQL z minimalnymi złożonościami. Utworzysz klasę jednostek, która modeluje tabelę Customers w przykładowej bazie danych Northwind. Następnie utworzysz proste zapytanie, aby wyświetlić listę klientów, którzy znajdują się w Londynie.
Ten przewodnik jest zorientowany na kod zgodnie z projektem, aby ułatwić przedstawienie koncepcji LINQ to SQL. Zwykle należy użyć relacyjnej Projektant obiektu do utworzenia modelu obiektów.
Uwaga
Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Ten przewodnik został napisany przy użyciu programu Visual Basic Development Ustawienia.
Wymagania wstępne
Ten przewodnik używa dedykowanego folderu ("c:\linqtest") do przechowywania plików. Przed rozpoczęciem przewodnika utwórz ten folder.
Ten przewodnik wymaga przykładowej bazy danych Northwind. Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z witryny pobierania firmy Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych. Po pobraniu bazy danych skopiuj plik do folderu c:\linqtest.
Omówienie
Ten przewodnik składa się z sześciu głównych zadań:
Tworzenie rozwiązania LINQ to SQL w programie Visual Studio.
Mapowanie klasy na tabelę bazy danych.
Wyznaczanie właściwości klasy w celu reprezentowania kolumn bazy danych.
Określanie połączenia z bazą danych Northwind.
Tworzenie prostego zapytania do uruchomienia względem bazy danych.
Wykonywanie zapytania i obserwowanie wyników.
Tworzenie rozwiązania LINQ to SQL
W tym pierwszym zadaniu utworzysz rozwiązanie programu Visual Studio zawierające niezbędne odwołania do kompilowania i uruchamiania projektu LINQ to SQL.
Aby utworzyć rozwiązanie LINQ to SQL
W menu Plik kliknij pozycję Nowy projekt.
W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual Basic.
W okienku Szablony kliknij pozycję Aplikacja konsolowa.
W polu Nazwa wpisz LinqConsoleApp.
Kliknij przycisk OK.
Dodawanie odwołań i dyrektyw LINQ
W tym przewodniku używane są zestawy, które mogą nie być instalowane domyślnie w projekcie. Jeśli System.Data.Linq
nie ma na liście jako odwołanie w projekcie (kliknij pozycję Pokaż wszystkie pliki w Eksplorator rozwiązań i rozwiń węzeł Odwołania), dodaj go zgodnie z opisem w poniższych krokach.
Aby dodać element System.Data.Linq
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.
W oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, kliknij zestaw System.Data.Linq, a następnie kliknij przycisk OK.
Zestaw jest dodawany do projektu.
Ponadto w oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, przewiń do i kliknij przycisk System.Windows.Forms, a następnie kliknij przycisk OK.
Ten zestaw, który obsługuje pole komunikatu w przewodniku, jest dodawany do projektu.
Dodaj następujące dyrektywy powyżej
Module1
:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Mapowanie klasy na tabelę bazy danych
W tym kroku utworzysz klasę i zamapujesz ją na tabelę bazy danych. Taka klasa jest określana jako klasa jednostki. Należy pamiętać, że mapowanie jest wykonywane przez dodanie atrybutu TableAttribute . Właściwość Name określa nazwę tabeli w bazie danych.
Aby utworzyć klasę jednostki i zamapować ją na tabelę bazy danych
Wpisz lub wklej następujący kod do Module1.vb bezpośrednio powyżej
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
Wyznaczanie właściwości klasy do reprezentowania kolumn bazy danych
W tym kroku wykonasz kilka zadań.
Atrybut służy ColumnAttribute do wyznaczania
CustomerID
właściwości iCity
w klasie jednostki jako reprezentujących kolumny w tabeli bazy danych.Właściwość należy wyznaczyć
CustomerID
jako reprezentującą kolumnę klucza podstawowego w bazie danych._CustomerID
Wyznaczasz pola i_City
dla magazynu prywatnego. LinQ to SQL może następnie przechowywać i pobierać wartości bezpośrednio, zamiast korzystać z publicznych metod dostępu, które mogą obejmować logikę biznesową.
Aby reprezentować cechy dwóch kolumn bazy danych
Wpisz lub wklej następujący kod do Module1.vb tuż przed
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
Określanie Połączenie do bazy danych Northwind
W tym kroku użyjesz DataContext obiektu do nawiązania połączenia między strukturami danych opartymi na kodzie a samą bazą danych. Jest DataContext to główny kanał, za pomocą którego pobierasz obiekty z bazy danych i przesyłasz zmiany.
Zadeklarujesz również, Table(Of Customer)
aby działać jako logiczna, typowana tabela dla zapytań względem tabeli Customers w bazie danych. Te zapytania zostaną utworzone i wykonane w kolejnych krokach.
Aby określić połączenie z bazą danych
Wpisz lub wklej następujący kod do
Sub Main
metody .Należy pamiętać, że
northwnd.mdf
plik znajduje się w folderze linqtest. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.' 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)()
Tworzenie prostego zapytania
W tym kroku utworzysz zapytanie, aby znaleźć klientów w tabeli Customers (Klienci) w Londynie. Kod zapytania w tym kroku opisuje tylko zapytanie. Nie jest on wykonywany. Takie podejście jest nazywane odroczonym wykonywaniem. Aby uzyskać więcej informacji, zobacz Wprowadzenie do zapytań LINQ (C#).
Utworzysz również dane wyjściowe dziennika, aby wyświetlić polecenia SQL generowane przez linQ to SQL. Ta funkcja rejestrowania (korzystająca z Logmetody ) jest przydatna podczas debugowania i określania, że polecenia wysyłane do bazy danych dokładnie reprezentują zapytanie.
Aby utworzyć proste zapytanie
Wpisz lub wklej następujący kod do
Sub Main
metody po deklaracjiTable(Of Customer)
:' 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
Wykonywanie zapytania
W tym kroku wykonasz zapytanie. Wyrażenia zapytania utworzone w poprzednich krokach nie są oceniane, dopóki nie będą potrzebne wyniki. Po rozpoczęciu For Each
iteracji polecenie SQL jest wykonywane względem bazy danych, a obiekty są zmaterializowane.
Aby wykonać zapytanie
Wpisz lub wklej następujący kod na końcu
Sub Main
metody (po opisie zapytania):' 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)
Naciśnij klawisz F5, aby debugować aplikację.
Uwaga
Jeśli aplikacja generuje błąd czasu wykonywania, zobacz sekcję Rozwiązywanie problemów z Edukacja przez przewodniki.
W oknie komunikatu zostanie wyświetlona lista sześciu klientów. W oknie Konsola zostanie wyświetlony wygenerowany kod SQL.
Kliknij przycisk OK , aby odrzucić okno komunikatu.
Aplikacja zostanie zamknięta.
W menu File kliknij pozycję Save All.
Ta aplikacja będzie potrzebna, jeśli przejdziesz do następnego przewodnika.
Następne kroki
Przewodnik : wykonywanie zapytań między relacjami (Visual Basic) jest kontynuowane w miejscu zakończenia tego przewodnika. Przewodnik Wykonywanie zapytań między relacjami pokazuje, jak linQ to SQL może wykonywać zapytania w różnych tabelach, podobnie jak sprzężenia w relacyjnej bazie danych.
Jeśli chcesz wykonać przewodnik Wykonywanie zapytań między relacjami, pamiętaj, aby zapisać rozwiązanie dla właśnie ukończonego przewodnika, co jest wymaganiem wstępnym.