共用方式為


逐步解說:簡單的物件模型和查詢 (C#)

這個逐步解說提供極為簡單的基本端對端 LINQ to SQL 案例。 您將建立的實體類別會構成 Northwind 範例資料庫中的 Customers 資料表。 接著,您會建立簡單查詢,以便列出位於倫敦的客戶。

這個逐步解說的設計是以程式碼為導向,以協助顯示 LINQ to SQL 概念。 一般來說,您會使用物件關聯式設計工具來建立物件模型。

注意

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

本逐步解說的內容是依據 Visual C# 開發設定所撰寫的。

必要條件

  • 本逐步解說會使用專用資料夾 ("c:\linqtest5") 來保存檔案。 請先建立這個資料夾,再開始逐步解說。

  • 這個逐步解說需要使用 Northwind 範例資料庫。 如果您的開發電腦上沒有這個資料庫,則可以從 Microsoft 下載網站下載。 如需指示,請參閱下載範例資料庫。 下載此資料庫之後,請將檔案複製到 c:\linqtest5 資料夾。

概觀

此逐步解說包含六個主要工作:

  • 在 Visual Studio 中建立 LINQ to SQL 解決方案。

  • 將類別對應至資料庫資料表。

  • 指定類別的屬性以表示資料庫資料表。

  • 指定與 Northwind 資料庫的連接。

  • 建立要對資料庫執行的簡單查詢。

  • 執行查詢並觀察結果。

建立 LINQ to SQL 方案

在第一項工作中,您會建立一個 Visual Studio 解方案,其中包含建置與執行 LINQ to SQL 專案所需的參考。

若要建立 LINQ to SQL 方案

  1. 在 Visual Studio [檔案] 功能表上,指向 [新增],然後按一下 [專案]

  2. 在 [新增專案] 對話方塊的 [專案類型] 窗格中,按一下 [Visual C#]

  3. 按一下 [範本] 窗格中的 [主控台應用程式]

  4. 在 [名稱] 方塊中,輸入 LinqConsoleApp

  5. 在 [位置] 方塊中,確認您要儲存專案檔的位置。

  6. 按一下 [確定]

加入 LINQ 參考和指示詞

本逐步解說使用的組件,可能在您的專案中預設為不安裝。 如果 System.Data.Linq 並未列為專案中的參考 (展開 [方案總管] 中的 [參考] 節點),請按照下列步驟所述將其加入。

若要加入 System.Data.Linq

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [參考],然後按一下 [新增參考]

  2. 按一下 [加入參考] 對話方塊中的 [.NET],然後按一下 System.Data.Linq 組件,再按一下 [確定]

    組件隨即加入至專案。

  3. 將下列指示詞加在 Program.cs 的上方:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

將類別對應至資料庫資料表

在這個步驟中,您會建立類別並將它對應至資料庫資料表。 這類類別稱為「實體類別」。 請注意,只要加入 TableAttribute 屬性,即可完成對應。 Name 屬性會指定資料庫中資料表的名稱。

若要建立實體類別並將它對應至資料庫資料表

  • 在 Program.cs 中的 Program 類別宣告正上方輸入或貼上下列程式碼:

    [Table(Name = "Customers")]
    public class Customer
    {
    }
    

指定類別的屬性以表示資料庫資料行

在這個步驟中,您會完成下列幾項工作:

  • 您會使用 ColumnAttribute 屬性 (Attribute) 指定實體類別的 CustomerIDCity 屬性 (Property),以表示資料庫資料表中的資料行。

  • 您會指定 CustomerID 屬性 (Property),以表示資料庫中的主索引鍵資料行。

  • 您會指定 _CustomerID_City 欄位做為私用儲存區。 然後,LINQ to SQL 可以直接儲存和擷取值,而非使用可能含有商務邏輯的公用存取子。

若要表示兩個資料庫資料行的特性

  • 在 Program.cs 中 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;
        }
    }
    

指定與 Northwind 資料庫的連接

在這個步驟中,您會使用 DataContext 物件,在程式碼架構的資料結構與資料庫本身間建立連接。 DataContext 為主要通道,您可透過該通道擷取資料庫中的物件以及送出變更。

您也可以宣告 Table<Customer> 做為邏輯具型別資料表,供您查詢資料庫中的 Customers 資料表。 您會在後面幾個步驟中,建立和執行這些查詢。

若要指定資料庫連接

  • 將下列程式碼輸入或貼到 Main 方法中。

    請注意,northwnd.mdf 檔案會假設位於 linqtest5 資料夾中。 如需詳細資訊,請參閱本逐步解說稍早的「必要條件」一節。

    // 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>();
    

建立簡單查詢

在這個步驟中,您會建立查詢以尋找資料庫 Customers 資料表中有哪些客戶位於倫敦。 這個步驟中的查詢程式碼只會描述查詢, 而不會實際執行。 這種方法也稱為「延後執行」。 如需詳細資訊,請參閱 LINQ 查詢簡介 (C#)

此外,您還會產生記錄輸出,以顯示 LINQ to SQL 所產生的 SQL 命令。 這項記錄功能 (其使用 Log) 有助於進行偵錯,以及判斷要傳送至資料庫的命令是否正確地表示您的查詢。

建立簡單查詢

  • Main 方法中的 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;
    

執行查詢

在這個步驟中,您要實際執行這個查詢。 而在需要結果時,才會評估您在前面的步驟中建立的查詢運算式。 當您開始 foreach 反覆運算時,會對資料庫執行 SQL 命令,並且將物件具體化。

查詢查詢

  1. Main 方法的尾端輸入或貼上下列程式碼 (在查詢描述之後)。

    foreach (Customer cust in custQuery)
    {
        Console.WriteLine("ID={0}, City={1}", cust.CustomerID,
            cust.City);
    }
    
    // Prevent console window from closing.
    Console.ReadLine();
    
  2. 按 F5,進行應用程式偵錯。

    注意

    如果應用程式產生執行階段錯誤,請參閱依逐步解說學習的<疑難排解>一節。

    主控台視窗中的查詢結果應如下所示:

    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. 在主控台視窗中按 Enter 鍵,以關閉應用程式。

後續步驟

逐步解說:跨關聯性查詢 (C#) 主題會從這個逐步解說結束的地方繼續。 跨關聯性查詢逐步解說會示範 LINQ to SQL 如何跨資料表進行查詢,這類似於關聯式資料庫中的「聯結」

如果您想執行<跨關聯性查詢>逐步解說,請務必儲存您剛在本逐步解說完成的方案,這是必要的條件。

另請參閱