方法 : LINQ クエリ結果を特定の型で返す (Visual Basic)
統合言語クエリ (LINQ: Language-Integrated Query) を使用すると、データベース情報へのアクセスとクエリの実行を容易に行うことができます。既定では、LINQ クエリは、オブジェクトのリストを匿名型として返します。Select 句を使用することで、クエリが特定の型のリストを返すように指定することもできます。
SQL Server データベースに対するクエリを実行し、結果を特定の名前付きの型として表す新しいアプリケーションの作成方法を、次の例に示します。詳細については、「匿名型 (Visual Basic)」および「Select 句 (Visual Basic)」を参照してください。
このトピックの例では、Northwind サンプル データベースを使用します。開発用コンピューターに Northwind サンプル データベースがインストールされていない場合は、Microsoft ダウンロード センター の Web サイトからダウンロードできます。手順については、「Downloading Sample Databases (LINQ to SQL)」を参照してください。
[!メモ]
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューの [サーバー エクスプローラー] または [データベース エクスプローラー] をクリックして、サーバー エクスプローラーまたはデータベース エクスプローラーを開きます。
サーバー エクスプローラーまたはデータベース エクスプローラーで、[データ接続] を右クリックし、[接続の追加] をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを含むプロジェクトを追加するには
Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。プロジェクトの種類として、Visual Basic の [Windows フォーム アプリケーション] をクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。[LINQ to SQL クラス] 項目テンプレートをクリックします。
ファイルに northwind.dbml という名前を付けます。[追加] をクリックします。オブジェクト リレーショナル デザイナー (O/R デザイナー) で northwind.dbml ファイルが開かれます。
照会するテーブルを O/R デザイナーに追加するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、Northwind データベースへの接続を展開します。[Tables] フォルダーを展開します。
O/R デザイナーを閉じている場合は、前に追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。
Customers テーブルをクリックし、デザイナーの左ペインにドラッグします。
デザイナーによって、プロジェクト用の新しい Customer オブジェクトが作成されます。クエリ結果は、Customer 型または作成した型で返すことができます。このサンプルでは、後半の手順で新しい型を作成し、クエリ結果をその型として返します。
変更を保存し、デザイナーを閉じます。
プロジェクトを保存します。
データベースを照会するコードを追加し、結果を表示するには
ツールボックスから、DataGridView コントロールを、プロジェクトの既定の Windows フォームである Form1 にドラッグします。
Form1 クラスを変更するために、Form1 をダブルクリックします。
Form1 クラスの End Class ステートメントの後ろに次のコードを追加します。このコードは、このサンプルのクエリ結果を保持する CustomerInfo 型を作成します。
Public Class CustomerInfo Public Property CompanyName As String Public Property ContactName As String End Class
O/R デザイナーにテーブルを追加すると、デザイナーによって DataContext オブジェクトがプロジェクトに追加されます。このオブジェクトには、これらのテーブルにアクセスするために必要なコードで、個々のオブジェクトと各テーブルのコレクションにアクセスするためのコードが格納されます。プロジェクトの DataContext オブジェクトには、.dbml ファイルの名前に基づいて名前が付けられます。このプロジェクトの場合、DataContext オブジェクトの名前は northwindDataContext になります。
コード内に DataContext のインスタンスを作成し、O/R デザイナーで指定したテーブルを照会できます。
Form1 クラスの Load イベントに次のコードを追加します。このコードは、データ コンテキストのプロパティとして公開されたテーブルを照会します。クエリの Select 句によって、クエリ結果の各項目の型として、匿名型の代わりに新しい CustomerInfo 型が作成されます。
Dim db As New northwindDataContext Dim customerList = From cust In db.Customers Where cust.CompanyName.StartsWith("L") Select New CustomerInfo With {.CompanyName = cust.CompanyName, .ContactName = cust.ContactName} DataGridView1.DataSource = customerList
F5 キーを押してプロジェクトを実行し、結果を確認します。
参照
処理手順
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
概念
DataContext Methods (O/R Designer)