最終更新:2012-09-04 (火) 07:06:31 (4251d)  

Entity Framework
Top / Entity Framework

ADO.NET Entity Framework

.NET Framework 3.5からADO.NETに追加された、新しい概念に基づくデータ・アクセス技術

開発者がデータ ソースの論理スキーマにマップされた概念モデルを使用できるようにする

Entity SQL

  • LINQ to SQL が式木(Expression Trees)から Transact-SQL を生成していたのに対して、Entity SQL と呼ばれる SQL ライクなクエリ言語に変換されてから実行される

Entity Framework/バージョン

開発スタイル

データベースファースト?

  • テーブルからウィザードで概念モデルを生成

モデルファースト?

  • Entity Framework 4.0で追加
  • Entity Modelのデザイナーで概念モデルを定義
  • EDM ファイルを作成して、Visual Studio のデザイナを利用してエンティティ・アソシエーションを定義
  • データベースは不要で、作成した概念モデルからテーブルなどを丸ごと作成する

コードファースト

モデル

概念モデル?

  • データの表現形式(リレーショナル・データベースのテーブルなど)に依存しない、アプリケーションで扱うデータをモデル化したもの

論理モデル?

  • 概念モデル?を実際のデータ表現形式(RDBとか)に合わせて変換したもの

物理モデル?

  • 使用するデータベース製品に合わせ、論理モデルを修正したもの

クラスとか

EDM (Entity Data Model)

  • Entity Framework上に構築されたアプリケーション用のデータを定義するための仕様

CSDL?(Conceptual Schema Definition Language:概念スキーマ定義言語)

  • エンティティが持つプロパティ情報(=概念スキーマ?)を定義

SSDL(Storage Schema Definition Language:ストア・スキーマ定義言語)

  • RDBとの1対1のマッピング情報を定義

MSL?(Mapping Schema Language:マッピング・スキーマ言語)

  • CSDL?SSDLをマッピング(橋渡し)する役割

クエリの方法

メモ

Entity Framework/イニシャライザ

  • 初期データを展開するための仕組み

Entity Framework/マイグレーション

  • モデルが変更された場合に、スキーマの変更をデータベースに反映させる仕組み
  • DBに保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能

遅延読み込み

  • ContextOptions?.LazyLoadingEnabled?
  • このプロパティの本来のデフォルト値は、False(遅延読み込みを行わない=.NET Framework 3.5と同じ挙動)であるが、Visual Studio 2010でADO.NET Entity Data Modelツールを使ってEDMを作成した場合、デフォルトでこのプロパティにTrue(遅延読み込みを行う)を設定するコードが書き込まれるため、Visual Studio 2010を通常どおり使用する場合、遅延読み込みは有効となる。

関連

参考