New EntityFramework

このところ、書籍の執筆とWindows7でなかなか手に付かなかったのですが、実は次期Visual StudioのBetaがリリースされてます。

Visual Studio 2010 and .NET Framework 4 Beta 1(英語)
https://msdn.microsoft.com/ja-jp/vstudio/dd582936(en-us).aspx

Microsoft Visual Studio 2010 - 将来のバージョン(日本語)https://www.microsoft.com/japan/msdn/vstudio/2010/

で気がつくと、ADO.NETチームブログにたくさんのエントリが!(こればかりですね・・・)

例えばこれです。
https://blogs.msdn.com/adonet/archive/2009/05/21/updated-entity-framework-documentation-for-beta1.aspx

ADO.NET EntityFrameworkは、次期バージョンでかなり改良されています。

例えば、上記のエントリに書いてあることを書き出してみます。

・Persistence-Ignorant Objects
いわゆるPIシナリオのサポートですね。永続化層に対して特定インタフェイスや特定プロダクトの実装をエンティティにいれこまないことが可能です。システムの汎用化を促進します。で、当然POCOを使用します。ちなみに現状実装ではInterface+POCOにせざる得ないんですよ。(このへんはプログラミングLINQにも記述しています。)

・Deferred Loading of Related Objects
遅延ロードの実装です。LINQ to SQLではありましたが、EFにはなかったものです。
ただ、欲しい人とそうでない人にわかれる機能ですね。コレ。

・Functions in LINQ to Entities Queries
CLRのメソッドがCSDL/SSDL上に定義できるようになります。でLINQ to Entities越しに実行可能と。
ドメインモデルをどこまでメタボにするのか?は意見の分かれるところだと思いますが。

・Customized Object Layer Code Generation
これは大きいですね、要するにEDMの独自改修をサポートしてくれる機能です。
今までユーザーが個人で追加したインターフェイスなどのサポートは不可能でした。(ツールでジェネレートするしかなかったわけです。)
T4Templarte機能を使用してテンプレートに従ってクラスをジェネレートします。必要な部分は開発者が手を入れた形でクラスが作られます。

ここが詳しいです。
Customizing Entity Classes in VS 2010
https://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

T4Templateについては以下より。
How Do I: Create And Use T4 Templates?
https://msdn.microsoft.com/en-us/vstudio/cc308634.aspx

ただ、上にも書きましたが、ドメインモデルにどのくらい機能をもたせるのか?は意見の分かれるところなんですよね。でもできた方がよいにきまっています。

・Model-First Support
これも正常進化系、概念モデルより、データベースのモデルを作成する形が可能になります。
スクリプトが発行可能なんですね。使用するかは置いておいて。

・Complex Type Support in the Entity Data Model Designer
正常進化ですね。デザイナでより複雑な型がサポートされます。これは使うこともあるでしょう。

・Naming Service
これはまぁ微妙かな~
単数形とか複数形とかEntityの名前の自動化あたりです。

・Improved Model Browser Functionality
Entityの検索とか、オブジェクトの削除とか。

・User-Defined Functions (Entity SQL)
EntitySQLでユーザー定義関数のコールがサポートされます。LINQ to Entitiesではどうなんでしょう?(これは後ほど確認したいと思います。)

という感じがEFの次期バージョンです。どうですか?正常進化していると思いました?
本音を言うと、早くこれとか、DataServicesとかRIAServisesとかとか評価したいのですが、状況が許さないところだったりします。
EFについては、井上ブログも取り扱っていますので、そちらもご確認を。