次の方法で共有


方法 : データベースに接続する (LINQ to SQL)

更新 : November 2007

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

DataContext の役割は、オブジェクトを求める要求を、データベースに対して発行する SQL クエリに変換し、その結果からオブジェクトを組み立てることです。DataContext では、標準クエリ演算子と同じ演算子パターン (Where や Select など) を実装することで、統合言語クエリ (LINQ: Language-Integrated Query) を使用できます。

Bb399375.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

セキュリティで保護された接続を確立することは、最も重要です。詳細については、「LINQ to SQL におけるセキュリティ」を参照してください。

使用例

次の例では、DataContext を使用して、Northwind サンプル データベースに接続し、市が London である顧客の行を取得しています。

' DataContext takes a connection string.
Dim db As New DataContext("…\Northwnd.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
// DataContext takes a connection string. 
DataContext db = new DataContext(@"c:\Northwnd.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);

各データベース テーブルは Table コレクションとして表され、テーブルを識別するエンティティ クラスを使用して GetTable メソッドでアクセスできます。

基本的な DataContext クラスおよび GetTable メソッドを使用するのではなく、厳密に型指定された DataContext を宣言するのがベスト プラクティスです。厳密に型指定された DataContext では、次の例のように、すべての Table コレクションをそのコンテキストのメンバとして宣言します。

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
public partial class Northwind : DataContext
{
    public Table<Customer> Customers;
    public Table<Order> Orders;
    public Northwind(string connection) : base(connection) { }
}

この場合、London の顧客を取得するクエリは、次のように簡単に表せます。

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

参照

その他の技術情報

データベースとの通信 (LINQ to SQL)