作法:連接到資料庫

DataContext 是主要管道,您可以透過該管道連接至資料庫、擷取資料庫中的物件,以及將變更送回給資料庫。 您使用 DataContext,正如同您使用 ADO.NET SqlConnection 一樣。 事實上,DataContext 是使用您所提供的連接或連接字串 (Connection String) 來初始化。 如需詳細資訊,請參閱 DataContext 方法 (O/R 設計工具)

DataContext 的用途是將物件的要求轉譯為針對資料庫進行的 SQL 查詢,然後再從結果中組合物件。 DataContext 會實作與標準查詢運算子 (例如 WhereSelect) 相同的運算子模式,來啟用 Language-integrated Query (LINQ)。

重要

維護安全的連接是最重要的事。 如需詳細資訊,請參閱 LINQ to SQL 中的安全性

範例 1

在下列範例中,DataContext 是用來連接至 Northwind 範例資料庫,以及擷取城市為倫敦 (London) 之客戶的資料列。

// DataContext takes a connection string.
DataContext db = new DataContext(@"c:\Northwind.mdf");

// Get a typed table to run queries.
Table<Customer> Customers = db.GetTable<Customer>();

// Query for customers from London.
var query =
    from cust in Customers
    where cust.City == "London"
    select cust;

foreach (var cust in query)
    Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);
' DataContext takes a connection string.
Dim db As New DataContext("…\Northwind.mdf")

' Get a typed table to run queries.
Dim Customers As Table(Of Customer) = db.GetTable(Of Customer)()

' Query for customer from London.
Dim Query = _
    From cust In Customers _
    Where cust.City = "London" _
    Select cust

For Each cust In Query
    Console.WriteLine("id=" & cust.CustomerID & _
        ", City=" & cust.City)
Next

使用實體類別來識別每個資料庫資料表,這樣每個資料庫資料表會以透過 Table 方法取得的 GetTable 集合表示。

範例 2

最佳做法是宣告強型別 (Strongly Typed) DataContext,而不是依賴基本 DataContext 類別和 GetTable 方法。 強型別 DataContext 會將所有 Table 集合宣告為內容的成員 (如下列範例所示)。

public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}
Partial Public Class Northwind
    Inherits DataContext
    Public Customers As Table(Of Customer)
    Public Orders As Table(Of Order)
    Public Sub New(ByVal connection As String)
        MyBase.New(connection)
    End Sub
End Class

接著,您可以用下列更簡單的方式表示針對倫敦 (London) 客戶的查詢:

Northwnd db = new Northwnd(@"c:\Northwnd.mdf");
var query =
    from cust in db.Customers
    where cust.City == "London"
    select cust;
foreach (var cust in query)
    Console.WriteLine("id = {0}, City = {1}", cust.CustomerID,
        cust.City);
Dim db As New Northwind("...\Northwnd.mdf")

Dim query = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust

For Each cust In query
    Console.WriteLine("id=" & cust.CustomerID & _
        ", City=" & cust.City)
Next

另請參閱