特集:Visual Studio 2008 SP1新機能解説(2).NETの新データアクセス・テクノロジ
WINGSプロジェクト ナオキ/山田 祥寛 |
|
|
■Entity SQLを利用してEntity Clientにクエリを行う
Entity ClientはSystem.Data.EntityClient名前空間のクラスで利用できるデータ・プロバイダだ。
Entity Clientプロバイダの利用は、従来のADO.NETのデータ・プロバイダの利用とほとんど同様である。つまり、EntityConnectionクラスを利用してEDMへのアクセスを行い、EntityCommandクラスを用いてEDMにクエリを行い、EntityDataReaderクラスがクエリの結果を返す。従来のADO.NETとの違いは、
- 対象がデータベースそのものではなくEDMである
- Transact-SQLの代わりに「Entity SQL」を使用する
という点だけだ。
| |||||||||||||||
表2 System.Data.EntityClientとSystem.Data.SqlClientの比較 | |||||||||||||||
Entity SQLはTransact-SQLとは異なり、EDMをサポートするために新しく提供されている問い合わせ言語だ。Entity SQLを使用することで、EDMで表現されるデータに対するクエリを効率的に実行できる。
つまり、Entity Clientは、利用すべきエンティティの内容とEntity SQLの構文さえ押さえているならば利用しやすいという特徴がある。また、細かな制御ができるため、プログラム内でクエリを動的に変更できる動的クエリの作成に適している。この点からアドホック・クエリにも活用しやすいといえるだろう。
ただし、Entity Framework 1.0のEntity SQLは、DML(Data Manipulation Language:データ操作言語。検索・追加・更新・削除を行うSELECT/INSERT/UPDATE/DELETE命令を指す)の中でもSELECT命令しかサポートしていない。つまり、Entity SQLではINSERT/DELETE/UPDATE命令を利用することはできないので要注意。
以下のコードは、実際にEntity ClientとEntity SQLを利用した例だ。
| ||
リスト1 Entity ClientとEntity SQLを利用してPubsEntitiesオブジェクトからroyaltyプロパティが12以下のレコードを取得し、GridView1にバインディングするコード(上:C#版、下:VB版) |
リスト1において、PubsEntitiesとは、EDMの中で定義されたPubsエンティティ型のオブジェクトである。ここでは、RDBのPubsデータベースに相当する。Entity SQLを利用する場合、この自動生成されたPubsEntitiesオブジェクトに対してEntity Clientからクエリを発行することになる。
Entity SQLは一見するとTransact-SQLに酷似しているが、微妙に違いもある。Entity SQLで利用できるステートメントは以下のようになる。これに併せて、次項で解説するQuery Builderメソッドもここで記述しておく。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
表3 Entity SQL/Query Builderで利用できるステートメント | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
この表からも、Query BuilderメソッドとEntity SQLステートメントとがほぼ1対1の対応関係にあることを確認いただけるだろう。このため、Entity SQLと、Query Builderメソッドをそれぞれ利用する場合にも異なるステートメントを覚える必要がなく、状況に応じた使い分けが行いやすいのが特徴だ。
Entity SQLの一般的な構文は、次のとおりである。
| |
SELECT VALUE句とWHERE句を使った基本的なEntity SQL構文 |
Transact-SQL構文との大きな違いは「*」パラメータが使えないことと、FROM句からエンティティ・テーブルを参照して、レコード全体にクエリを投影する点だ。
Entity SQLに関するより詳細な情報はMSDNの「Entity SQL リファレンス」を参照いただきたい。
INDEX | ||
Visual Studio 2008 SP1新機能解説(1) | ||
DBアプリをコーディングレスで構築する「ASP.NET Dynamic Data」 | ||
1.Dynamic Dataアプリケーションの基本 | ||
2.データ・モデルの作成/Global.asaxの編集 | ||
3.メタデータ編集によるDynamic Dataアプリケーションのカスタマイズ | ||
4.自作ユーザー・コントロールの利用/ページ・テンプレートのカスタマイズ | ||
Visual Studio 2008 SP1新機能解説(2) | ||
.NETの新データアクセス・テクノロジ「ADO.NET Entity Framework」 | ||
1.ADO.NET Entity Framework概要 | ||
2.Entity Data Model(EDM)の作成と利用 | ||
3.EDMに対するクエリの利用方法(Entity SQL) | ||
4.EDMに対するクエリの利用方法(Object Services/LINQ to Entities) | ||
Visual Studio 2008 SP1新機能解説(3) | ||
RESTスタイルのWebサービスを手軽に公開する「ADO.NET Data Services」 | ||
1.ADO.NET Data Services概要/対応するクライアント | ||
2.サンプル − ADO.NET Data Servicesの公開 | ||
3.ASP.NET AJAX環境のデータを取得/追加する | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|