青柳臣一 blog : .NET や C# がメインの blog

.NET や C# がメインの blog
投稿数 - 548, コメント - 259, トラックバック - 205

ADO.NET vNext

ADO.NET vNext っていうのは ADO.NET の次のバージョンのことです。Orcas といっしょにリリースされるんだと思います。一部では ADO.NET 3.0 と呼ばれてたりもします。

ADO.NET vNext: The Entity Framework, LINQ and more
今までの ADO.NET は SqlConnection とか Sql Command とかデータベースとやり取りするためのクラスライブラリでしたが、ADO.NET vNext ではそういったローレベルだけでなく、抽象化したもっとハイレベルのレイヤも受け持つようになるようです。

そのハイレベルのレイヤっていうのは、ようするに O/R マッピングのことみたいです。データベース上のスキーマ (テーブルやビュー) はリレーショナルデータベースにむいたような構造にしてやらなくちゃいけないことが多いですし、そのままクラス / オブジェクトとして表現してもいまいちな場合が多いです。そこで、データベース上のスキーマとは別にクラス向き (オブジェクト指向向きと言ったらいいのかな?) のモデルを作ってやって、それらをマッピングしておけばいいだろうということです。で、このモデルを定義するための規則が ADO.NET Entity Data Model っていうやつみたいです。ADO.NET Tech Preview: Entity Data Model に Entity Data Model の詳細が書かれています。で、この枠組み全体を ADO.NET Entity Framework とかって呼んでるみたいです。

Next-Generation Data Access: Making the Conceptual Level Real こちらの資料にちょっと具体的な感じがありますが、真ん中チョイ下くらいの 「Making the Conceptual Level Real」 のところの 「Build the Conceptual Model」 がエンティティデータモデルで書いたモデルの例みたいです。XML で書かれてますが、とうぜん Visual Studio 上ではデザイナが提供されるんでしょう。そして、「Figure 7」 にあるような感じでデータベース上のスキーマとモデルとのマッピングを行い、これらからクラスが自動生成されるそうです。

モデルから作成されたクラス (オブジェクト) は、マッププロバイダ経由で使うようです。具体的には MapConnection、MapCommand といったクラスが用意されていて、SQL でアクセスできます。ただ、普通のリレーショナルデータベースとは違うので普通の SQL では機能が足らず Entity SQL というのが定義されているようです。The ADO.NET Entity Framework Overview とかに Entity SQL について書かれています。

ADO.NET vNext screencast
こちらにスクリーンキャストがあります (英語)。
普通に ADO.NET 3.0 と言ってますね。あと、CTP は夏の後半に出るとかなんとか。
最初は普通に ADO.NET 2.0 でアクセスするコードを書いてます。それをマッププロバイダ (MapConnection、MapCommand) と Entity SQL を使ってアクセスするように改造していっています。モデルは事前に作ってあったのを使っているみたいです。モデルをデザインやマッピングなどをどういう風にやるのか見てみたかったんですが、その辺は出てきません (というか、まだデザイナが無くて XML をガリガリ書かないといけないから見せられない、と想像してみる(^^; )。そして、さらにそのコードを LINQ を使うように書き換えていっています。最後で insert や update に相当することもできるというのもデモしてます。また、このときにデータベース上では複数のテーブルが一つのクラスへとマップされている場合に、オブジェクトを更新するとちゃんとそれぞれのテーブルを更新する SQL が自動的に発行される様子をプロファイラを使って見せています。

エンティティデータモデルもおもろいですが、LINQ を使った時点でマッププロバイダとかを気にする必要がほとんどなくなっちゃうとこもかなりおもしろく感じました。相手がデータベースなのか ADO.NET Entity Framework なのかは LINQ の中で勝手にうまいことやってくれるので、コード上はたいした違いはないっていうことですね。

投稿日時 : 2006年6月24日 18:51

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.divakk.co.jp/blog/aoyagi/services/trackbacks/7285.aspx

フィードバック

# [Vista]WinFS について (4)

昨年レドモンドに行ったときに,WinFS の混迷が何をもたらしたかについて,断片的ですが某氏に教えていただく機会がありました. 情報ストレージに関するMicrosoftの挫折は今回が初めてではない。さまざまな犠牲をはらいながら、やっとOSへと統合されることになっていたWinF
2006/06/29 23:36 | NyaRuRuの日記 (トラックバック)

コメントの投稿

タイトル  
名前  
URL
コメント   
Protected by Clearscreen.SharpHIPこの絵に表示されている文字列を入力してください (半角で4文字です):