3つめは「ADO.NET Entity Framework」である。これは少し扱いが難しそうだ。開発段階でも、Entity Frameworkの存在理由について、コミュニティも巻き込んださまざまな議論があったという。Entity Frameworkとは、概念データモデルのレベルにおける設計を、プログラミング言語でサポートするための仕組み、といったところだろうか。

どのような言語を使う場合でも、現在ではO/Rマッパーの使用は当たり前となっている。しかし、O/Rマッパーはあくまで論理データモデルのレベルにおけるデータ構造と、プログラミング言語におけるクラスをマッピングするものに過ぎない。O/Rマッパーを使用していても、基本的には論理的なデータモデルに対する直接的な操作を行うことになってしまうのだ。

そこで、Entity Frameworkを使用することで、概念データモデルに対する操作をプログラミング言語で行えるようになるという。たとえば、「Personという型のインスタンス群から、Saralyという属性の値が300以上ののインスタンスを取得する」というプログラミング言語上での記述と、実際にPersonというモデルを「どこに/どのように」格納するかを完全に分離できる。実際のデータの保存先は、RDBのPersonテーブルかもしれないし、ファイルシステム上に保存されたXMLファイルかもしれない、というわけだ。

この例だとなかなかわかりにくいかもしれないが、近藤氏の考えでは、Entity Frameworkは、すべての開発者が活用すべき技術と言うよりは、アーキテクトの生産性を向上させるためのフレームワークであるとのことだ。