Udostępnij za pośrednictwem


Przewodnik: Prosty model obiektu i zapytanie (C#)

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 C# Development Ustawienia.

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.

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

  1. W menu Plik programu Visual Studio wskaż polecenie Nowy, a następnie kliknij pozycję Projekt.

  2. W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual C#.

  3. W okienku Szablony kliknij pozycję Aplikacja konsolowa.

  4. W polu Nazwa wpisz LinqConsoleApp.

  5. W polu Lokalizacja sprawdź, gdzie chcesz przechowywać pliki projektu.

  6. 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 Eksplorator rozwiązań), dodaj go zgodnie z opisem w poniższych krokach.

Aby dodać element System.Data.Linq

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.

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

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

  • Atrybut służy ColumnAttribute do wyznaczania CustomerID właściwości i City 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 Program.cs wewnątrz nawiasów klamrowych dla Customer klasy.

    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łą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<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 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źć 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 Main metody po deklaracji Table<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

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

    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

  3. Naciśnij klawisz Enter w oknie konsoli, aby zamknąć aplikację.

Następne kroki

Przewodnik : wykonywanie zapytań między relacjami (C#) jest kontynuowane w miejscu zakończenia tego przewodnika. 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 Po zapytaniach między relacjami, pamiętaj, aby zapisać rozwiązanie dla właśnie ukończonego przewodnika, co jest wymaganiem wstępnym.

Zobacz też