![次世代データアクセステクノロジー」](/images/article/common/70X90_20080109.jpg)
次世代データアクセステクノロジー
第5回:ADO.NET Entity FrameworkにおけるObjectServicesの使用
著者:マイクロソフト 小高 太郎
公開日:2008/1/29(火)
ObjectServicesにおけるEntity SQL、LINQの使用
Object ServicesはEntity Data Modelを操作する言語として、前述のEntity SQLやLINQ(LINQ to Entity)を使用することも可能である(リスト5、リスト6)。
ここまでの説明ではEntity Data Modelを、主にテーブルとビジネスエンティティが1対1の対応であるものを中心に紹介してきたが、それだけではメリットも見えにくいであろう。そこで最後に、複数のテーブルを1つのエンティティタイプにマップする例を紹介しEntity Data Modelの優位点を実感していただきたいと思う。
リスト5:Object ServicesでEntity SQLを使用した例
![リスト5:Object ServicesでEntity SQLを使用した例](/images/article/0801/9/5/code_1.gif)
(画像をクリックすると別ウィンドウに拡大図を表示します)
リスト6:Object ServicesでLINQ to Entityを使用した例
static void Main(string[] args)
{
using (pubsEntities pubsContext = new pubsEntities())
{
string fname = "Maria";
var emps = from e in pubsContext.employee
where e.fname == fname
select e;
foreach (employee emp in emps)
Console.WriteLine("{0} - {1}", emp.fname, emp.lname);
pubsContext.Connection.Close();
}
}
![図1:複数のテーブルを1つのエンティティタイプにマッピング](/images/article/0801/9/5/1.gif)
図1:複数のテーブルを1つのエンティティタイプにマッピング
(画像をクリックすると別ウィンドウに拡大図を表示します)
複数のテーブルへのマッピング
今回は図1のようなスキーマのテーブルを用意した。この2つのテーブルは、フィールドが同じ形であり、同じ性格のデータを管理する。したがって、オブジェクトモデルとしては1つにまとめて設計したいと考えるのが一般的ではないだろうか?
そこで、今回は概念層にCustomerを用意して論理レベルの2つのテーブル(CustomerEast、CustomerWest)をまとめるように設計した(図1)。では実際にプログラムをみてみよう。
次のページ