このチュートリアルでは、複雑さを最小限に抑えたエンド ツー エンドの LINQ to Entities シナリオを示します。AdventureWorks サンプル データベースの Address、Contact、Product、SalesOrderHeader、および SalesOrderDetail の各テーブルに基づくエンティティとアソシエーションが含まれる AdventureWorks Sales Model を作成します。次に、AdventureWorks の在庫で赤色の製品を一覧表示する簡単なクエリを作成します。
前提条件
このチュートリアルでは、AdventureWorks サンプル データベースが必要です。開発用コンピュータにこのデータベースがインストールされていない場合は、CodePlex サイトの「Microsoft SQL Server コミュニティのサンプル」ページからダウンロードできます。
概要
このチュートリアルは、次の 4 つの主要な作業から構成されます。
Visual Studio 2008 で LINQ to Entities ソリューションを作成する。
AdventureWorks Sales Model を作成する。
Sales Model に対して実行する簡単なクエリを作成する。
クエリを実行して結果を観察する。
LINQ to Entities ソリューションの作成
最初のタスクでは、LINQ to Entities プロジェクトをビルドおよび実行するために必要な参照が含まれる Visual Studio ソリューションを作成します。
C# の LINQ to Entities ソリューションを作成するには
Visual Studio の [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ペインで、[Visual C#] をクリックします。
ドロップダウン メニューから [.NET Framework 3.5] を選択します。
[テンプレート] ペインの [コンソール アプリケーション] をクリックします。
[プロジェクト名] ボックスに「LinqToEntitesConsoleApp」と入力します。
[場所] ボックスで、プロジェクト ファイルの場所を指定して、[OK] をクリックします。
[プロジェクト] メニューの [参照の追加] をクリックします。[.NET] タブをクリックし、[System.Data.Entity] アセンブリをクリックします。最後に、[OK] をクリックします。
ソース コード ファイルに System.Data.Objects 名前空間の using ディレクティブを追加します。
AdventureWorks Sales Model の作成
このタスクでは、エンティティ データ モデル ウィザードを使用して AdventureWorks Sales Model を作成し、プロジェクト内のモデルを参照します。
AdventureWorks Sales Model を作成および参照するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスの [テンプレート] ペインで、[ADO.NET Entity Data Model] をクリックします。モデルに「AdventureWorksSalesModel」という名前を付けて、[追加] をクリックします。
[モデルのコンテンツの選択] ダイアログ ボックスで [データベースから生成] を選択し、[次へ] をクリックします。
[データ接続の選択] ウィンドウで、一覧から既存の AdventureWorks 接続を選択するか、AdventureWorks サンプル データベースが存在する SQL Server のインスタンスへの新しい接続を作成します。
エンティティ接続設定に「AdventureWorksEntities」という名前を付けて App.Config に保存し、[次へ] をクリックします。
[データベース オブジェクトの選択] ダイアログ ボックスで、すべてのオブジェクトを選択解除し、[テーブル] を展開して、次のテーブル オブジェクトを選択します。
Address (Person)
Contact (Person)
Product (Production)
SalesOrderDetail (Sales)
SalesOrderHeader (Sales)
モデルの名前空間に「AdventureSalesWorksModel」という名前を付けて、[完了] をクリックします。
[モデル ブラウザ] ビューが開き、AdventureWorks Sales Model のエンティティが表示されます。[保存] ボタンをクリックし、[Program.cs] タブを選択してソース コードに戻ります。
ソース ファイルに AdventureWorksSalesModel の using ステートメントを追加します。
簡単なクエリの作成
この手順では、AdventureWorks の在庫から赤色の製品を検索するクエリを作成します。一連の値を返すようにクエリが設計されている場合でも、クエリ変数はクエリ コマンドのみを格納します。foreach ループでクエリ変数を反復処理するまで、実際にはクエリは実行されません。このような方法を遅延実行といいます。詳細については、「クエリの実行」を参照してください。
簡単なクエリを作成するには
Main
メソッドに次のコードを入力するか、貼り付けます。
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Product> products = AWEntities.Product;
IQueryable<Product> query =
from product in products
where product.Color == "Red"
select product;
foreach (Product product in query)
{
Console.WriteLine("Name: {0}", product.Name);
Console.WriteLine("Product number: {0}", product.ProductNumber);
Console.WriteLine("List price: ${0}", product.ListPrice);
Console.WriteLine("");
}
}
//Prevent the console window from closing.
Console.WriteLine("Hit Enter...");
Console.Read();
クエリの実行
この手順では、実際にクエリを実行します。前の手順で作成したクエリ式は、結果が必要になるまでは評価されません。foreach の反復処理を開始した時点で、AdventureWorks Sales Model に対してクエリが実行され、結果が実体化されます。
クエリを実行するには
F5 キーを押して、アプリケーションをデバッグ モードで実行します。
クエリの結果は、コンソール ウィンドウに表示されます。
コンソール ウィンドウで Enter キーを押してアプリケーションを終了します。
参照
処理手順
Entity Data Model ウィザードを使用する方法 (Entity Framework)