Open棟梁Project - マイクロソフト系技術情報 Wiki

-[[戻る>データアクセスのいろいろ]]

* 目次 [#s84ee5e9]
#contents

*概要 [#e1c8710d]
[[LINQ]]との関連もチェックして下さい。
.NET Framework 3.5 SP1で追加されたデータベースアクセステクノロジー~
-[[LINQ]]との関連もチェックして下さい。

-Entity Frameworkとは、エンティティを定義し、~
データベースへアクセスするための手段を提供する技術。
**概念モデルに対してプログラミング [#g3c9b5e5]
Entity Frameworkは、インピーダンス ミスマッチ問題を解決するため、~
エンティティを定義し、エンティティ経由でデータベースへアクセスするための手段を提供する技術。

-Entity Data ModelによりO/Rマッパとは異なり、~
「結合(Join)」などというRDB固有の事情に振り回されることなく、~
-概念モデルであるEntity Data Model(EDM)を開発者が柔軟にモデリング可能。~
RDBに対して直接プログラミングする代わりに、EDMに対してプログラミングする。

--これにより、テーブルとオブジェクトを1対1に対応させるO/Rマッパとは異なり、~
「結合(Join)」というRDB固有の事情に振り回されることなく、~
より直感的に必要な情報を取得することが可能になる。

-もちろん、エンティティという皮を1枚かぶせることで、~
RDB側のスキーマ変更――特にテーブルの分割/統合~
のような変化にもより耐性が高まることになる。
--RDB側のスキーマ変更(特にテーブルの分割/統合のような変化)に対して耐性がある。

-Entity Data Model
-EntityはADO.NET 非接続型と同様に、多階層のアプリケーションを開発する場合、~
オブジェクトとして渡すことが可能でありDTO(Data Transfer Object)として利用できる。

--CSDL(Conceptual Schema Definition Language:概念スキーマ定義言語)~
概念スキーマ
**Entity Data Model(EDM) [#se4e2907]
CSDL、SSDL、および MSL 仕様~
http://msdn.microsoft.com/ja-jp/library/vstudio/bb399604.aspx

--MSL(Mapping Schema Language:マッピング・スキーマ言語)~
マッピング
-概念スキーマ定義言語 (CSDL)、ストア スキーマ定義言語 (SSDL)、およびマッピング仕様言語 (MSL) は ~
XML ベースの言語で、それぞれ概念モデル、ストレージ モデル、モデル間のマッピングについて記述する。

--SSDL(Storage Schema Definition Language:ストア・スキーマ定義言語)~
ストア・スキーマ
-Entity Data Model(EDM) の定義は、Entity Data Model デザイナーにより、~
設計時にモデルとマッピングの情報を .edmx ファイルに保存する。

*信任投票 [#of646cbb]
使い難いとの批判も多い模様。
-Entity Data Model デザイナーは、ビルド時に .edmx ファイルの情報を使用して、~
Entity Framework が実行時に必要とする .csdl、.ssdl、および .mslファイルを作成する。

***CSDL [#u45bdd9b]
CSDL(Conceptual Schema Definition Language:概念スキーマ定義言語)~
概念スキーマ(概念モデル)

-CSDL 仕様~
http://msdn.microsoft.com/ja-jp/library/vstudio/bb399292.aspx

***MSL [#eb804616]
MSL(Mapping Schema Language:マッピング・スキーマ言語)~
CSDLとSSDL(モデル間)のマッピング

-MSL 仕様~
http://msdn.microsoft.com/ja-jp/library/vstudio/bb399202.aspx

***SSDL [#r9199843]
SSDL(Storage Schema Definition Language:ストア・スキーマ定義言語)~
ストレージ・スキーマ(ストレージ モデル)

-SSDL 仕様~
http://msdn.microsoft.com/ja-jp/library/vstudio/bb399559.aspx

**DBファースト、モデルファースト [#m1aabfea]

-エンタープライズではほぼ、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/

***モデルファースト [#e8fd5f15]
モデル(EDM)からDBMSのスキーマを生成する方法

-第2回 EDMにおける多対多関係とEntity Frameworkでのデータの取得/保存
--1.多対多関係の実現
--2.EDMからデータベースの自動生成~
http://www.atmarkit.co.jp/fdotnet/ef4basic/ef4basic02/ef4basic02_02.html
--3.Entity Frameworkで自動生成されるクラス
--4.Entity Frameworkでのデータ保存/取得サンプル

***DBファースト [#k0847c21]
DBMSのスキーマからモデル(EDM)を生成する方法

-第4回 データベースからのEntity Data Model生成~
http://www.atmarkit.co.jp/fdotnet/ef4basic/ef4basic04/ef4basic04_01.html
--1.データベースからのEDM生成
--2.ストアド・プロシージャの呼び出し
--3.複合型の活用/まとめ

*批判 [#j3882416]
-(エンタープライズの領域では)使い難いとの批判も多い模様。
-EUCやJOSON形式でのデータ配信などにはマッチする可能性もある。

**スキーマ構造の変更 [#g2c01a47]
-DBMSのスキーマからモデル(EDM)を生成する方法を採用している場合、~
スキーマの構造が変わった場合、モデル(EDM)の作り直しが発生する。

-生成されたモデル(EDM)をカスタマイズしていた場合、~
作り直しにより、カスタマイズが破棄されてしまう可能性がある。

**信任投票 [#of646cbb]

-ADO .NET Entity Framework Vote of No Confidence~
http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/

-ADO.NET Entity Framework Taking Some Heat~
http://www.infoq.com/news/2008/06/entity-framework-heat

*参考 [#n42d5d9a]
-連載:ADO.NET Entity Framework入門 - @IT~
http://www.atmarkit.co.jp/fdotnet/ef4basic/index/index.html

-.NETの新データアクセス・テクノロジ「ADO.NET Entity Framework」 - @IT~
http://www.atmarkit.co.jp/fdotnet/special/vs2008sp1ef/vs2008sp1ef_01.html

-雲のごとく - Site Home - MSDN Blogs~
--.NET Framework 4.5 におけるデータ アクセスの概要 その1~
http://blogs.msdn.com/b/daisukei/archive/2014/07/29/net-framework-4-5.aspx
--.NET Framework 4.5 におけるデータ アクセスの概要 その 3 ~ ADO.NET Entity Framework~
http://blogs.msdn.com/b/daisukei/archive/2014/08/29/net-framework-4-5-3-ado-net-entity-framework.aspx


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS