LINQ 與資料存取 (4) - 透過 LINQ to SQL 進行資料表查詢

此系列的(1)、(2),逐步討論 LINQ 與 DataSet 的資料查詢應用,而在第三篇中,進一步導入自訂實體類別以萃取資料庫的資料內容,而這是建立分層架構的主要關鍵概念之一。由於實體類別在應用程式的開發過程中如此重要,因此後來.NET平台亦在前述的基礎上,提供了更進一步的實作支援,也就是 LINQ to SQL 相關機制。

System.Data.Linq 命名空間提供 LINQ to SQL 作業所需的功能實作類別,在預設的情形下,編輯器並未提供LINQ to SQL的程式碼撰寫支援,因此在你開始運用LINQ to SQL 技術之前,必須先參照相關的組件,同時引用命名空間。開啟「加入參考」對話方塊,於其中找到 System.Data.Linq 組件,將其勾選,按下「確定」按鈕完成加入。


接下來引用相關的命名空間如下:

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

完成以上的步驟,就可以在專案中運用 LINQ to SQL 技術。

現在同樣以此系列文章第一篇所提到的KTMS資料庫中的Categories資料表為例,建立對應資料表結構的類別,定義三個主要的欄位,分別是 CategoryID 、 CategoryName 以及Description 。

[Table(Name = "Categories")]
public class Category
 {
    [Column]
    public int CategoryID;
    [Column]
    public string CategoryName;
    [Column]
    public string Description;
}

現在回到 Main 程式中,以參數字串 conn 的資料庫連線路徑資訊為基礎建立 DataContext 物件 dc ,接下來引用其 GetTable() 方法指定 Category 型別以取得資料表參照,然後透過 LINQ 查詢語法,查詢所有資料內容。

static void Main(string[] args)
 {
    string conn = "Server=Tim-PC;Database=KTMS;Trusted_Connection=True;";
    DataContext dc = new DataContext(conn);
    Table<Category> table = dc.GetTable<Category>();
     var rows =
                from row in table
                select row ;
     foreach (var row in rows)
                Console.WriteLine(row.CategoryID + ":" + row.CategoryName );
    Console.Read();
}

執行這段程式碼,即可得到與前述系列文章中相同的查詢結果。




沒有留言: