開発環境の準備
はじめに、開発環境を構築しよう。必要なものは「Visual Studio 2008」「SQL Server 2005(Express Editionで可能)」である。
Visual Studio 2008は2008年2月よりパッケージの販売が行われる。したがって、開発環境を構築したい場合は、製品版もしくは無償で提供されているVisual Studio 2008 Express Edition日本語版(http://www.microsoft.com/
express/download/)でも行うことが可能である。
LINQの使用は日本語版で可能であるが、後述のADO.NET Entity Frameworkの開発には、現時点(2007年12月現在)で英語版のみの対応なため、今回は英語版を使用する。また、SQL Server Express Editionについては、Visual Studio 2008のインストールにより同時にインストールされるため、それをそのまま使用する(ダウンロードセンターより別途入手してもよい)。
Visual Studio 2008は、画面の指示に従ってインストールする(今回はページの関係上割愛させていただく)。また今回は使用するデータベースとして、SQL Server 2000に付属されたサンプルデータベースである「pubs」を使用する。pubsは
「http://msdn2.microsoft.com/ja-jp/library/ms143221.aspx」からダウンロードすることが可能である。
開発手順
では、実際に開発を行っていこう。まずVisual Studio 2008を起動し、「File → New → Project」から「ConsoleApplication」を選択する。言語に関しては、今回はC#を使用する。
起動するとスタートページが表示されるので、「Project → AddNewItem」を実行し、表示された「AddNewItem」ウィンドウで、「LINQ to SQL Classes」を選択し、dbmlファイルを追加する。このdbmlファイルに対して、LINQ to SQLで扱うエンティティを定義することになる。
dbmlファイルを追加するとデザイナーが表示されるので、サーバエクスプローラよりテーブルをドラッグする。今回はpubsデータベースのテーブルをすべて選択する。
ここで注意してほしいのだが、同じようにデザイナーにテーブルを追加するものとして「型付データセット」がある。型付データセットは一般的に「特定の画面」や「特定のビジネスロジック」で使用するテーブルをデザイナーに追加して作成するという考え方である。また作成した型付データセット自体も基本的には「特定の画面」と「特定のビジネスロジック」で専用に扱うものだ。
一方LINQ to SQLの場合、作成するdbmlは今回の例のように基本的にはプロジェクトに1つ作成すればよい。これはLINQのデータに対する変形が非常に柔軟であるからだ。つまり、プロジェクト内にある共通のdbmlに対して、そのシチュエーションに合わせてLINQを使用したデータの変形抽出を行い、画面やビジネスロジックの構築が可能だということである。
図1:dbmlファイル定義
(画像をクリックすると別ウィンドウに拡大図を表示します)
作成されたdbml内にあるtitleとは、テーブルから作成されたデータクラスだ。このtitleを使用したコレクションが「結果セット(=コレクションオブジェクト)」になる。今回の例では、コレクションオブジェクトがtitlesであり、これに対してLINQでクエリーを行うこととなる。
筆者の環境はVisual Studio 2008 Beta2(2007年10月時点)であったのだがこの環境ではtitlesテーブルをデザイナーにセットすると、データクラスの名前がtitleと単数形に変更される(図1)。そのためフィールド名としてあるtitleが、データクラスと名前の競合し、title1とリネームされるので注意していただきたい。 次のページ