最終更新:2012-09-04 (火) 07:06:31 (4578d)
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 初代 - 2008/08/11
- Entity Framework 4.0? - 2010/04/12
- Entity Framework 4.1 - 2011/04/12
- Entity Framework 4.2? - 2011/11/01
- Entity Framework 4.3 - 2012/02/09
- Entity Framework 4.3.1? - 2012/05/15
- Entity Framework 5
開発スタイル
データベースファースト?
- テーブルからウィザードで概念モデルを生成
モデルファースト?
- Entity Framework 4.0で追加
- Entity Modelのデザイナーで概念モデルを定義
- EDM ファイルを作成して、Visual Studio のデザイナを利用してエンティティ・アソシエーションを定義
- データベースは不要で、作成した概念モデルからテーブルなどを丸ごと作成する
コードファースト
- Entity Framework 4.1で追加。
- POCOという形式のクラスからデータベースを生成。
モデル
概念モデル?
- データの表現形式(リレーショナル・データベースのテーブルなど)に依存しない、アプリケーションで扱うデータをモデル化したもの
論理モデル?
- 概念モデル?を実際のデータ表現形式(RDBとか)に合わせて変換したもの
物理モデル?
- 使用するデータベース製品に合わせ、論理モデルを修正したもの
クラスとか
EDM (Entity Data Model)
- Entity Framework上に構築されたアプリケーション用のデータを定義するための仕様
CSDL?(Conceptual Schema Definition Language:概念スキーマ定義言語)
- エンティティが持つプロパティ情報(=概念スキーマ?)を定義
SSDL(Storage Schema Definition Language:ストア・スキーマ定義言語)
- RDBとの1対1のマッピング情報を定義
MSL?(Mapping Schema Language:マッピング・スキーマ言語)
クエリの方法
- Entity SQL + EntityClient
- Object SQL? + Object Services?
- LINQ to Entities + Object Services?
メモ
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を通常どおり使用する場合、遅延読み込みは有効となる。