今まで見てきたサンプルは、データベースを操作するためにSQL文を使ってきました。.NET Framework3.5では、データベースのデータをプログラムの一部として扱うことができるEntity Frameworkが用意されました。この技術は、ADO.NETを利用して実現されています。
Entity Frameworkを使うと、データベースに格納するようなデータをオブジェクトやプロパティという形式で扱うことができます。これにより、データベースを意識せずにアプリケーションを構築することができるようになります。
○ プロジェクト
プロジェクトを作成して確認してみましょう。今回のプロジェクトではUsersテーブルの内容をEntity Frameworkを使って取り出してみましょう。
プロジェクトの種類 | コンソール アプリケーション |
---|---|
プロジェクト名 | EntityFrameworkTest |
○ AOD.NET Entity Data Modelの追加
データベースのデータをEntity Frameworkを使って取り出す準備をしましょう。次の図のようにソリューション エクスプローラーのプロジェクト名をクリックして表示されるメニューより、「追加(D)」―「新しい項目(W)...」をクリックします。
すると次の図のように「新しい項目の追加」ダイアログボックスが表示されるので、左側の一覧から「データ」を、中央のテンプレートの一覧から「ADO.NET Entity Data Model」を選択し、「名前(N):」に「Books」を入力して、「追加(A)」ボタンをクリックしてください。
次の図のように「Entity Data Model ウィザード」が表示されるので、「モデルに含めるコンテンツ(W)」から「データベースから EF Disigner」を選択して、「次へ(N) >」ボタンをクリックしてください。
次の図のように「アプリケーションがデータベースへの接続に使用するデータ接続(W)」に「Books.mdf」を選択し、「次へ(N) >」ボタンをクリックしてください。
次のようにメッセージボックスが表示されます。選択したデータベースファイルをプロジェクト内にコピーするかどうかを設定します。今回はコピーせずに使いますので、「いいえ(N)」をクリックしてください。
次の図のように「どのバージョンの Entity Framework を使用しますか(W)」に「Entity Framework 6.x」を選択し、「次へ(N) >」ボタンをクリックしてください。
次の図のように「モデルに含めるデータベース オブジェクト(W)」で「テーブル」を選択し、配下の項目すべてにチェックが付いていることを確認します。その後、「次へ(N) >」ボタンをクリックしてください。
ウィザードが終了し、次のようにソリューション エクスプローラーにファイルが追加されます。
また、次の図のように各テーブルに対するオブジェクトを表すデザイナーが表示されます。
これで、データを使う準備が整いました。次にプログラミングをしましょう。
○ プログラム
Mainメソッドを次のように記述してください。
Program.cs
○ 実行結果
Usersテーブルのデータ一覧
ID : ユーザー名 : パスワード : 氏名
1 : sato : csharp : 佐藤
2 : suzuki : spass: 鈴木
3 : takahashi : tpass : 高橋
4 : tanaka : tpass : 田中
5 : itou : ipass : 伊藤
6 : yamamoto : ypass : 山本
○ 解説
14行目ではDbContextクラスを継承するBooksEntitiesオブジェクトを生成しています。このクラスはADO.NET Entity Data Modelテンプレートを追加するときに自動生成されています。DbContextクラスはデータベースを表すクラスと言えます。そのクラスを継承しているBooksEntitiesクラスは、Booksデータベースを表します。
17、18行目ではLINQを使ってデータを取り出しています。詳しくは次の節で解説します。
23~26行目では、data変数をループしてデータを表示しています。data変数にはLINQで取り出したデータのコレクションが格納されています。25行目で一つ一つのレコードを表示しています。