Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przewodnik zawiera podstawowy całościowy scenariusz LINQ to SQL z małą ilością złożoności. 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 celowo zorientowany na kod, aby skutecznie przedstawić koncepcje LINQ to SQL. Zwykle należy użyć Projektanta relacyjnego obiektu do utworzenia modelu obiektów.
Uwaga / Notatka
Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Ten przewodnik został napisany przy użyciu ustawień programowania języka Visual C#.
Wymagania wstępne
Ten przewodnik używa dedykowanego folderu ("c:\linqtest5") 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:\linqtest5.
Przegląd
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, które można uruchomić na bazie 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 programu Visual Studio wskaż polecenie Nowy, a następnie kliknij pozycję Projekt.
W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual C#.
W okienku Szablony kliknij pozycję Aplikacja konsolowa.
W polu Nazwa wpisz LinqConsoleApp.
W polu Lokalizacja sprawdź, gdzie chcesz przechowywać pliki projektu.
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 element System.Data.Linq nie jest wymieniony jako odwołanie w projekcie (rozwiń węzeł Odwołania w Eksploratorze rozwiązań), dodaj go zgodnie z opisem w poniższych krokach.
Aby dodać 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.
Dodaj następujące dyrektywy w górnej części Program.cs:
using System.Data.Linq; using System.Data.Linq.Mapping;
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 Program.cs bezpośrednio nad deklaracją
Program
klasy:[Table(Name = "Customers")] public class Customer { }
Wyznaczanie właściwości klasy do reprezentowania kolumn bazy danych
W tym kroku wykonasz kilka zadań.
Za pomocą atrybutu ColumnAttribute określasz właściwości
CustomerID
iCity
w klasie jednostki jako kolumny w tabeli bazy danych.Właściwość
CustomerID
oznacza kolumnę klucza podstawowego w bazie danych.Wyznaczasz pola
_CustomerID
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 Program.cs wewnątrz nawiasów klamrowych dla klasy
Customer
.private string _CustomerID; [Column(IsPrimaryKey=true, Storage="_CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage="_City")] public string City { get { return this._City; } set { this._City=value; } }
Określanie połączenia z bazą 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. Głównym kanałem jest DataContext, za pomocą którego pobierasz obiekty z bazy danych i dokonujesz zmian.
Deklarujesz także Table<Customer>
, aby działała jako logiczna, silnie typowana tabela dla zapytań do 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
Main
metody .Należy pamiętać, że
northwnd.mdf
plik znajduje się w folderze linqtest5. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.// Use a connection string. DataContext db = new DataContext (@"c:\linqtest5\northwnd.mdf"); // Get a typed table to run queries. Table<Customer> Customers = db.GetTable<Customer>();
Tworzenie prostego zapytania
W tym kroku utworzysz zapytanie, aby znaleźć, którzy klienci w tabeli Klienci znajdują się w Londynie. Kod zapytania w tym kroku opisuje tylko zapytanie. Nie wykonuje go. 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 funkcji Log) jest przydatna podczas debugowania i do 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
Main
metody po deklaracjiTable<Customer>
.// Attach the log to show generated SQL. db.Log = Console.Out; // Query for customers in London. IQueryable<Customer> 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 foreach
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
Main
metody (po opisie zapytania).foreach (Customer cust in custQuery) { Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City); } // Prevent console window from closing. Console.ReadLine();
Naciśnij F5, aby debugować aplikację.
Uwaga / Notatka
Jeśli aplikacja generuje błąd czasu wykonywania, zajrzyj do sekcji Rozwiązywanie problemów w Ucz się przez przewodniki.
Wyniki zapytania w oknie konsoli powinny wyglądać następująco:
ID=AROUT, City=London
ID=BSBEV, City=London
ID=CONSH, City=London
ID=EASTC, City=London
ID=NORTS, City=London
ID=SEVES, City=London
Naciśnij Enter w oknie konsoli, aby zamknąć aplikację.
Dalsze kroki
Przewodnik Walkthrough: Querying Across Relationships (C#) kontynuuje się tam, gdzie kończy się ten przewodnik. Przewodnik Zapytania między relacjami pokazuje, jak LINQ to SQL może wykonywać zapytania między tabelami, podobnie jak sprzężenia w relacyjnej bazie danych.
Jeśli chcesz wykonać przewodnik dotyczący zapytań obejmujących relacje, pamiętaj, aby zapisać rozwiązanie dla właśnie ukończonego przewodnika, ponieważ jest to warunek wstępny.