Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET

Entity Frameworkとは?概要や仕組みについて

投稿日:2021年6月12日 更新日:

 

<目次>

(1) Entity Frameworkとは?概要や仕組みについて
 (1-1) Entity Frameworkとは?
 (1-2) オブジェクトとテーブルが1:1対応しない場合
 (1-3) Entity Frameworkの技術的な概要
 (1-4) Entity Frameworkの導入方法

(1) Entity Frameworkとは?概要や仕組みについて

(1-1) Entity Frameworkとは?

「Entity Framework」は「.NET Framework」における標準の「O/Rマッパー」です。「O/Rマッパー」というのは「インピーダンスミスマッチ」と呼ばれる、オブジェクト指向言語とリレーショナルデータベースとの間の構造の「差異」を吸収するための「O/Rマッピング」の技術やそのためのライブラリを指します。

 
「O/Rマッピング」では具体的には、リレーショナルデータベースのテーブルの各列と、オブジェクトのプロパティ(クラスのメンバ変数)とを1対1に紐づけていきます。
 
(図111)

O/Rマッパーが無いと、このDB←→クラスの間のデータのやり取りを1カラムずつ自分でマッピングする必要がありますが、O/Rマッパーではこのような面倒で煩雑な作業を自動的に処理してくれます。
 
 
上記記事ではEntity Frameworkを使わないサンプルプログラムを紹介しており、若干分かりにくいですが、SQLConnection⇒SQLCommand⇒SQLDataReaderとインスタンスを生成していき、最終的には各カラムの情報(reader[0],[1],[2])をコンソールに表示しています。この「reader[0]」「reader[1]」「reader[2]」をオブジェクトの各変数(プロパティ)にマッピングしていく作業が非常に手間で、Entity Frameworkが自動化してくれる部分です。
 
この結果として、アプリケーションの開発者はデータベースのテーブルやカラムの構造をそこまで意識する事なく、より簡潔なコードを組む事ができます。
 

(1-2) オブジェクトとテーブルが1:1対応しない場合

ただしEntity Frameworkにおいては、オブジェクト(アプリ側)とテーブル(DB側)が必ず1対1にならないことを考慮して「エンティティ」と呼ばれる、テーブルとアプリケーション側のオブジェクトの中間に位置するようなモデル(概念モデル)を導入して、エンティティ経由でのデータベースアクセスを可能にしています。エンティティとテーブルをひっくるめたモデルを総称して「Entity Data Model」と呼んでいます。

(図121)エンティティとテーブルの関係イメージ
 
図の通り、アプリケーション側の「オブジェクト」とデータベース側の「テーブル」との間に「エンティティ」を介する事によって、アプリケーション側はデータベース側の事情によるテーブル構造(中間テーブルなど)を意識する事なくDBアクセスが可能になります。
 
上図の例では、「エンティティ」(概念モデル)はデータベースのテーブル(論理モデル)に直接マッピングされており、実際はデータベースには「中間テーブル」がある事を意識せずにアクセスできています。
 
そのために、EntityFrameWork側ではテーブル同士の対応関係のみを定義しています。図の例では「Document」(例:領収書)と「Field」(例:品名、金額)の間はM:Nの関係ですが、中間テーブルを持たない代わりに、そのDocumentとFieldの対応関係(M:N)のみを保持する事で、紐付けを可能にしています。
 

(1-3) Entity Frameworkの技術的な概要

Entity Frameworkの中心となるのは「DBContext」と呼ばれるクラスで、アプリケーション⇒データベースへのゲートウェイの役割を果たします。DBContextには1つ以上の「DBSet」が紐づき、これはDBのテーブルに相当するオブジェクトになります。

(図131)

DbSetに対するクエリはアプリケーション側(C#など)からLINQによるクエリを発行し、Entity FrameworkがLINQをランタイム(実行時)にSQLへと変換し、DBに対してクエリを発行します。

(図132)

そしてDB接続 ⇒ クエリ実行 ⇒ データをオブジェクトにマッピング ⇒ DBSetに追加といった処理を実行していきます。
 
以降DBSetに変更が入った時も同様で、DBSetとDBが同期されるようにEntity Frameworkが同期の処理を自動で行ってくれます。
 

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法

  <目次> (1) ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法  (1-1) やりたい事の整理  (1-2) ViewModelを使った複数モデルの連携 …

Visual Studioのプロジェクトを別ソリューションに移動する手順

  <目次> (1) Visual Studioのプロジェクトを別ソリューションに移動する手順  (1-1) プロジェクトを別ソリューションに移動する手順  (1-2) 参考①:「.cspr …

ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順

<目次> (1) ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順  (1-1) 新規プロジェクトを作成  (1-2) 参照の追加  (1-3) 単体テスト用のコードの記述  ( …

BundleConfig.csの設定および記述方法について

  <目次> (1) BundleConfig.csの設定および記述方法について  (1-1) BundleConfig.csの設定および記述方法について  (1-2) BundleConf …

ASP.NET MVCでformをSubmitする方法

<目次> (1) ASP.NET MVCでformをSubmitする方法  (1-1) 概要  (1-2) HTMLを使ってformをsubmitする方法  (1-3) サンプルプログラム  (1-4 …

  • English (United States)
  • 日本語
Top