Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
.NET Framework 3.5 SP1で追加されたデータベースアクセステクノロジー
概念モデルに対してプログラミング †
Entity Frameworkは、インピーダンス ミスマッチ問題を解決するため、
エンティティを定義し、エンティティ経由でデータベースへアクセスするための手段を提供する技術。
- 概念モデルであるEntity Data Model(EDM)を開発者が柔軟にモデリング可能。
RDBに対して直接プログラミングする代わりに、EDMに対してプログラミングする。
- これにより、テーブルとオブジェクトを1対1に対応させるO/Rマッパとは異なり、
「結合(Join)」というRDB固有の事情に振り回されることなく、
より直感的に必要な情報を取得することが可能になる。
- RDB側のスキーマ変更(特にテーブルの分割/統合のような変化)に対して耐性がある。
- EntityはADO.NET 非接続型と同様に、多階層のアプリケーションを開発する場合、
オブジェクトとして渡すことが可能でありDTO(Data Transfer Object)として利用できる。
Entity Data Model(EDM) †
CSDL、SSDL、および MSL 仕様
http://msdn.microsoft.com/ja-jp/library/vstudio/bb399604.aspx
- 概念スキーマ定義言語 (CSDL)、ストア スキーマ定義言語 (SSDL)、およびマッピング仕様言語 (MSL) は
XML ベースの言語で、それぞれ概念モデル、ストレージ モデル、モデル間のマッピングについて記述する。
- Entity Data Model(EDM) の定義は、Entity Data Model デザイナーにより、
設計時にモデルとマッピングの情報を .edmx ファイルに保存する。
- Entity Data Model デザイナーは、ビルド時に .edmx ファイルの情報を使用して、
Entity Framework が実行時に必要とする .csdl、.ssdl、および .mslファイルを作成する。
CSDL †
CSDL(Conceptual Schema Definition Language:概念スキーマ定義言語)
概念スキーマ(概念モデル)
MSL †
MSL(Mapping Schema Language:マッピング・スキーマ言語)
CSDLとSSDL(モデル間)のマッピング
SSDL †
SSDL(Storage Schema Definition Language:ストア・スキーマ定義言語)
ストレージ・スキーマ(ストレージ モデル)
DBファースト、モデルファースト †
- エンタープライズではほぼ、DBファーストを採用する。
- 単純なテーブル(データストア)しか使用しない
EUCなどの世界では、モデルファーストもマッチする可能性がある。
データベース ファースト 恵みの波紋
https://ogacha.wordpress.com/tag/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9-%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88/
モデルファースト †
モデル(EDM)からDBMSのスキーマを生成する方法
- 第2回 EDMにおける多対多関係とEntity Frameworkでのデータの取得/保存
DBファースト †
DBMSのスキーマからモデル(EDM)を生成する方法
批判 †
- 性能と柔軟性が重視されるエンタープライズの領域では、使い難いとの批判も多い模様。
- ツール等のスタンドアロンのプログラム、情報系システムなどのEUCによるRAD開発などにはマッチする可能性もある。
- また、ADO.NETは枯れた技術であるのに対し、Entity Frameworkは進化の余地がある。
エンプラ領域でのミスマッチ †
基幹系システムでは以下の理由でミスマッチと判断されることが多い。
内部実装とその動作がブラックボックス †
SQLが、LINQ to Entityのエンジンに生成される形であり、
また、内部実装とその動作がブラックボックスになっているため(※1)
それらが明確にならないと設計、チューニング、問題分析などが困難。
従って(特に日本の)エンタープライズ・アプリケーションでは敬遠されている。
これは、JavaのJava8でJPAでHibernateでJinqが敬遠されるのと≒。
スキーマ構造の変更 †
- DBMSのスキーマからモデル(EDM)を生成する方法を採用している場合、スキーマの構造が変わった場合、モデル(EDM)の作り直しが発生する。
- 生成されたモデル(EDM)をカスタマイズしていた場合、作り直しにより、カスタマイズが破棄されてしまう可能性がある。
RAD開発ツールに特有の、保守性の悪さがある。
(逆に言えば、カスタマイズがなければ、スキーマ構造の変更をモデル(EDM)に同期し、変更に迅速に対応できるとも言える。)
参考 †
MSDN †
- 雲のごとく - Site Home - MSDN Blogs
信任投票 †