方法: データベースに接続する

データベースへの接続、データベースからのオブジェクトの取得、およびデータベースへの変更内容の反映では、DataContext を仲介役として使用します。 DataContext の使い方は、ADO.NET の SqlConnection と同じです。 つまり、接続または接続文字列を指定して、DataContext を初期化します。 詳しくは、「DataContext メソッド (O/R デザイナー)」をご覧ください。

DataContext の役割は、オブジェクトを求める要求を、データベースに対して発行する SQL クエリに変換し、その結果からオブジェクトを組み立てることです。 DataContext では、標準クエリ演算子と同じ演算子パターン (WhereSelect など) が実装されており、統合言語クエリ (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

基本的な 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

関連項目