LINQ to SQL クラスの作成 : O/R デザイナの使用

更新 : 2007 年 11 月

オブジェクト リレーショナル デザイナ (O/R デザイナ) を使用すると、LINQ to SQL クラスをデータベース内のテーブルにマップできます。このようなマップされたクラスは、エンティティ クラスとも呼ばれます。エンティティ クラスのプロパティはテーブルの列にマップされ、データは Windows フォーム上のコントロールにバインドできます。LINQ to SQL の詳細については、「Visual Basic Express での LINQ の使用」を参照してください。

このレッスンでは、O/R デザイナを使用して、Northwind データベース内のテーブルにマップされたエンティティ クラスを作成する方法を説明します。その後、Windows フォーム アプリケーションでデータを表示します。

前提条件

  • Visual Basic Express Edition のインストール時に SQL Server Express Edition をインストールしなかった場合は、続行する前にインストールする必要があります。LINQ to SQL では、SQL Server Compact 3.5 データベースはサポートされていません。SQL Server Express Edition の入手方法については、「方法 : サンプル データベースをインストールする」の「SQL Server Express Edition の入手」を参照してください。

  • このレッスンを行うには、Northwind サンプル データベースの SQL Server バージョンにアクセスできる必要があります。詳細については、「方法 : サンプル データベースをインストールする」を参照してください。

やってみよう

O/R デザイナを開くには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスで、[テンプレート] ペインの [Windows フォーム アプリケーション] をクリックし、プロジェクトに「LINQToSQLSample」という名前を設定して、[OK] をクリックします。

    新しい Windows フォーム プロジェクトが開きます。

  3. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  4. [LINQ to SQL クラス] テンプレートをクリックし、[名前] ボックスに「NorthwindSample.dbml」と入力します。

  5. [追加] をクリックします。

    プロジェクトに空の LINQ to SQL クラス ファイル (NorthwindSample.dbml) が追加され、O/R デザイナが開きます。

O/R デザイナは、2 つのデザイン サーフェイスで構成されます。左側はエンティティ ペインで、右側はメソッド ペイン領域です。エンティティ ペインは、ファイルで定義されているエンティティ クラスを表示するメインのデザイン サーフェイスです。メソッド ペインは、ストアド プロシージャと関数にマップされる DataContext のメソッドを表示するデザイン サーフェイスです。O/R デザイナを右クリックし、[メソッド ペインの非表示] をクリックすると、メソッド ペインを非表示にできます。このレッスンではメソッド ペインは使用しませんが、その詳細については「DataContext メソッド (O/R デザイナ)」で説明しています。

メインのデザイン サーフェイスをクリックし、[プロパティ] ウィンドウで [Name] プロパティを調べて、名前が NorthwindSampleDataContext になっていることを確認します。データベース エクスプローラから O/R デザイナ サーフェイスにデータベース テーブルをドラッグすることで、エンティティ クラスを作成できます。ただし、まずデータベースへの接続を作成する必要があります。この手順は、「必要な情報の入手 : 既存のデータベースに接続する」で説明されている手順とほぼ同じですが、このレッスンでは SQL Server Express データベースを使用します。

Northwind データベースに接続するには

  1. [表示] メニューの [データベース エクスプローラ] をクリックします。

    データベース エクスプローラが開きます。

  2. データベース エクスプローラのツール バーで、[データベースへの接続] をクリックします。

  3. [データ ソースの選択] ウィンドウで、[Microsoft SQL Server データベース ファイル] をクリックし、[続行] をクリックします。

    [接続の追加] ダイアログ ボックスが表示されます。

  4. [接続の追加] ダイアログ ボックスで、データ ソースが [Microsoft SQL Server データベース ファイル (SqlClient)] になっていることを確認します。

  5. [参照] をクリックし、Northwind.mdf データベースを探して選択します。[開く] をクリックします。

  6. [接続の確認] をクリックして、接続が成功したことを検証します。

  7. [OK] をクリックして、[接続の追加] ダイアログ ボックスを閉じます。

エンティティ クラスの作成

これで、Northwind データベースのテーブルがデータベース エクスプローラに表示されるようになりました。データベース エクスプローラから O/R デザイナにテーブルをドラッグできます。これにより、データベース エクスプローラからドラッグしたテーブル内の列にマップされるプロパティを持つエンティティ クラスが自動的に作成されます。

エンティティ クラスを作成するには

  1. データベース エクスプローラで、Northwind.mdf を展開し、[テーブル] を展開します。

  2. データベース エクスプローラから O/R デザイナ サーフェイスに Customers をドラッグします。データ ファイルをプロジェクトにコピーするかどうか確認するメッセージが表示されたら、[はい] をクリックします。

    Customer という名前のエンティティ クラスが作成されます。これには、Customers テーブルの列に対応するプロパティが含まれています。

  3. データベース エクスプローラから O/R デザイナ サーフェイスに Orders をドラッグします。

    Customer エンティティ クラスへの関連付け (リレーションシップ) を持つ Order という名前のエンティティ クラスが作成されます。これには、Orders テーブルの列に対応するプロパティが含まれています。

これでエンティティ クラスを作成できたので、データ ソース構成ウィザードを実行して、エンティティ クラスを [データ ソース] ウィンドウに追加できます。

[データ ソース] ウィンドウでエンティティ クラスをオブジェクト データ ソースとして追加するには

  1. [ビルド] メニューの [LINQToSQLSample のビルド] をクリックします。

  2. [データ] メニューの [データ ソースの表示] をクリックします。

  3. [データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックします。

  4. [データ ソースの種類を選択] ページで、[オブジェクト] をクリックし、[次へ] をクリックします。

  5. [LINQToSQLSample] ノードを展開し、Customer クラスを探します。

    Bb531271.alert_note(ja-jp,VS.90).gifメモ :

    Customer クラスが使用可能でない場合は、[キャンセル] をクリックし、プロジェクトをビルドしてからウィザードを再実行します。

  6. [完了] をクリックしてデータ ソースを作成し、Customer エンティティ クラスを [データ ソース] ウィンドウに追加します。

エンティティ クラスへの Windows フォーム上のコントロールのバインド

[データ ソース] ウィンドウから Windows フォームにテーブルまたはフィールドをドラッグすると、エンティティ クラスにデータ バインドされるコントロールをフォームに追加できます。

エンティティ クラスにバインドされるコントロールを追加するには

  1. ソリューション エクスプローラで、Form1 を右クリックし、[デザイナの表示] をクリックします。

  2. [データ ソース] ウィンドウで、Customer を展開します。

  3. CompanyName の横にあるドロップダウン矢印をクリックし、[ラベル] をクリックします。

  4. CompanyName をフォームにドラッグします。

    フォームにラベルとナビゲーション ツール バーが追加されます。

  5. [データ ソース] ウィンドウから Form1 に Orders をドラッグします。CompanyName の下に配置します。

  6. ソリューション エクスプローラで、Form1 を右クリックし、[コードの表示] をクリックします。

  7. フォームに次のコードを追加します。これは、Form クラスの先頭で、どのメソッドにも属さない位置に追加します。

    Private NorthwindSampleDataContext1 As New _
        NorthwindSampleDataContext
    
  8. Form_Load イベントをダブルクリックして、このフォームのイベント ハンドラを作成します。イベント ハンドラに次のコードを追加します。

    CustomerBindingSource.DataSource = _
        NorthwindSampleDataContext1.Customers()
    
  9. F5 キーを押してコードを実行します。

  10. フォームが開いたら、ツール バーの [次に移動] ボタンをクリックして会社間をスクロールし、選択した顧客の注文が表示されるように注文データが更新されることを確認します。

変更の保存

O/R デザイナにコントロールを追加した時点では、ナビゲーション ツール バーの [データの保存] ボタンは有効になっていません。変更を保存できるようにするには、まず保存ボタンを有効にしてから、変更されたデータを保存するコードを追加する必要があります。

保存ボタンを有効にするには

  1. デザイン ビューで、ナビゲーション ツール バーの保存ボタンを選択します (フロッピー ディスクのアイコンのボタン)。

  2. [プロパティ] ウィンドウで、[Enabled] プロパティを [True] に設定します。

  3. 保存ボタンをダブルクリックして、イベント ハンドラを作成し、コード エディタに切り替えます。

  4. 保存ボタンのイベント ハンドラに次のコードを追加します。

    NorthwindSampleDataContext1.SubmitChanges()
    
  5. F5 キーを押してコードを実行します。

  6. いずれかの Shipped Date フィールドの値を変更し、Tab キーを押して変更をコミットします。

  7. [データの保存] をクリックします。

  8. フォームを閉じます

  9. F5 キーを押し、変更が保存されたことを確認します。

次の手順

このレッスンでは、O/R デザイナを使用して LINQ to SQL クラスを作成する方法について説明しました。次のレッスンでは、LINQ クエリを使用してデータをバインドする方法について説明します。アプリケーションで LINQ を使用する方法の詳細については、「Visual Basic Express での LINQ の使用」を参照してください。

次のレッスン : 「コントロールにデータをバインドするための LINQ の使用

参照

処理手順

データの格納とアクセス

関連データの表示

チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナ)

概念

Visual Basic Express での LINQ の使用

O/R デザイナの概要

その他の技術情報

レコードの管理 : プログラムでデータを使用する