Jaa


Microsoft Entity Framework June 2011 CTP が公開されました

今日からマイクロソフトは新年度になります。会社内の組織は大きく変わりましたが私自身は悲しいのか、嬉しいのかポジションチェンジはありません。まぁ、前年度とかわらないため仕事にはある程度慣れてはいるわけで、、出来ることを少しずつ増やしていきたいと思います。今後もデータアクセス系の技術情報はこの Blog でご紹介していきますので引き続きよろしくお願いします。

 

さて、さっそくですが ADO.NET team blog にもある通り Microsoft Entity Framework June 2011 CTPが公開されています。VS2008/.NET3.5 SP1 で登場し、VS2010/.NET4 で多くの機能が追加された Entity Framework ですが、まだまだ機能や品質の面で十分ではないというフィードバックもありました。今回の Update でランタイム、デザイナの両方でさらなる強化が行われています。公開された CTP をインストールすると、強化ポイントをいち早く体験することができます。

 

■ランタイムの強化

  • enum データ型のサポート

デザイナによるモデリング、コードファースト、LINQ がサポートされます。

詳細:https://blogs.msdn.com/b/efdesign/archive/2011/06/29/enumeration-support-in-entity-framework.aspx

  • spatial データ型のサポート

デザイナによるモデリング、LINQ がサポートされます。例えば2箇所のロケーションの距離を計算するといった面倒な操作も LINQ で処理できます。

詳細:https://blogs.msdn.com/b/efdesign/archive/2011/05/04/spatial-types-in-the-entity-framework.aspx

  • table-valued functions のサポート

EDM に table-valued functions を追加できます。またL追加した関数を LINQ で処理できます。

詳細:https://blogs.msdn.com/b/efdesign/archive/2011/01/21/table-valued-function-support.aspx

  • Stored procedures の改善

ストアドプロシージャは EDM の中に複数の結果セットを持つことができます。

  • パフォーマンスの改善

内部的に生成される非効率なSQL文が最適化されました。特に Table per type(TPT) 継承を使ったモデルに対する SQL 文は大きく改善されました。

  • LINQ クエリの自動的なコンパイルとキャッシュ

以前は CompiledQuery を使って LINQ Query を明示的にコンパイル/キャッシュする必要がありましたが、次のバージョンから自動的にこれらの処理を実行することが可能になります。パフォーマンスがよくなりそうですね。

詳細:https://blogs.msdn.com/b/efdesign/archive/2011/06/30/auto-compiled-linq-queries-entity-framework-june-2011-ctp.aspx

 

■デザイナの強化

  • Enums、 spatial data-types、table-value functions のサポート

上述しましたがデザイナでも利用できるようになります。

geo

詳細:https://blogs.msdn.com/b/efdesign/archive/2011/05/12/spatial-types-in-the-entity-designer.aspx

  • multiple diagrams

1つの EDM に対して複数のダイアグラムを作成できるようになります。モデルが大きく複雑になってしまうとデータ構造を把握することが難しくなるので、分割しておくと便利な時もあるかもしれませんね。下図では Model Browser に2つの Diagram があるのがわかります。

Multiple Diagrams

詳細:https://blogs.msdn.com/b/efdesign/archive/2010/10/11/entity-designer-improvements-preview.aspx

  • StoreGeneratedPattern

Entity のキーカラムに対して、StoredGeneratedPatternの指定が可能になります。

  • ファイルの分離

ダイアグラム情報を edmx やコードファイルとは分離したファイルにストアできるようになりました。

  • stored procedures

下図左のように EDM Wizard 実行中に「import selected stored procedures into the entity model」というチェックボックスが選択できるようになっています。チェックすると下図右のように自動的に実行結果にマッチした Complex Type が生成されます。

stst2

  • EDMデザイナのビジュアル

デザイナの見た目が色分けされて見やすくなります。Selection ドリブンで関連するプロパティ、アソシエーション、プロパティなども分かりやすくなる予定です。

Entity Shape Coloring

詳細:https://blogs.msdn.com/b/efdesign/archive/2010/10/11/entity-designer-improvements-preview.aspx

 

 

■セットアップしてみましょう。

ステップ0:System Requirements

・Supported Architectures
  • x86
  • x64
  • IA64 is not supported
・Supported Operating Systems
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Windows Server 2008 R2
・Software Requirements / Prerequisites
  • .NET Framework 4
  • Microsoft Visual Studio® 2010 SP1 or Microsoft Visual Studio 2010 SP1 Express Editions (※SP1が必須です)

ステップ1:インストール

Download Center から Microsoft Data Services, Entity Framework, and SQL Server Tools for Data Framework June 2011 CTP をインストールしてください。3つのmsiファイルがあります。下記の順番でインストールすることが推奨されているようです。

  • EF_JUNE_2011_CTP.msi(Entity Framework 2011 CTP runtime )
  • DS_JUNE_2011_CTP.msi(WCF Data Services 2011 CTP )
  • EFTools.msi(Entity Framework 2011 CTP entity designer )

ステップ2:プロジェクト作成

プロジェクトプロパティの「対象フレームワーク(G)」を「Microsoft Entity Framework June 2011 CTP」もしくは「Microsoft Entity Framework June 2011 CTP Client Profile」を指定します。

pj-prop

ステップ3:新しい項目の追加

「新しい項目の追加」を行うと、下図のように見慣れないテンプレートが追加されているのがわかります。

ef-newtemplate

※注意点

英語環境であれば問題なく使えますが、日本語環境で ADO.NET Entity Data Model を作成しようとするエラーが発生します。これを解決するためにテンプレートのコピーを行います。ただし正式な方法ではないのであくまで自己責任でお願いします。

「C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Data\1033\AdoNetEntityDataModelCSharp.zip」で「…\1041\AdoNetEntityDataModelCSharp.zip」を上書きしてください。

ステップ4:ウォークスルー

下記の Blog を参考にいろいろ試してみましょう

最後に

今回の CTP には下記の機能は実装されていませんが、すでにいくつかの機能の実装に着手しているようです。マイクロソフト製品や技術はバージョン3から安定して利用できる、といった都市伝説wもあることですし、まだ ADO.NET Entity Framework を見たことも使ったこともないという方も次のバージョンは注目しておいてくださいね。

  • Stored Procedure or table-valued function support in Code First
  • Migration support in Code First
  • Customizable conventions in Code First
  • Unique constraints support
  • Batching create-update-delete statements during save
  • Second level caching