GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — Entity Framework - Wikipedia

Entity Frameworkは、データ指向のソフトウェアアプリケーション開発をサポートするADO.NETのデータアクセス技術。.NET Framework 3.5 SP1より、標準ライブラリとして導入された[1]。

概要

従来技術の課題として、データアクセスモデルにおけるインピーダンスミスマッチがあった。つまり、開発アプリケーションのオブジェクト指向言語とRDBMSとの構造の違いにより、開発生産性を著しく低下させる原因になっていた[2]。この問題に対して独自のデータモデル(Entity Data Model)により、標準ライブラリのみでデータアクセスの課題を解決できるようになった。

Entity Frameworkは概念モデルを導入することで、アプリケーション内のオブジェクトとデータベースの論理モデルとの間を仲立ちするようにマッピングを行う。開発者はEntity Framework上で定義したEntityに対してクエリを実行し、Entity Framework がそれらの操作をデータベース固有のコマンドに変換することでモデルが活用される。 これにより、特定のデータベースへの依存関係をアプリケーションにハードコーディングしなくても済むようになる[1]。

背景

従来のアプリケーション開発において、オブジェクト指向プログラミングとリレーショナルデータベースの組み合わせはデファクトスタンダードとなっていた。ところが.NET Frameworkでは、長らくこのインピーダンスミスマッチを解決するための技術は提供されていなかった。.NET Frameworkを使用していた開発者の多くは時間と労力をかけて相互にマッピングするコーディングを行うか、NHibernateやiBatis.NETなどのサードパーティによるO/R(Object-Relational)ラッパーを組み合わせて効率化を図らなければならなかった[2]。

マイクロソフトは2007年、.NET framework 3.5のリリースにこのEntity Frameworkを標準ライブラリとして組み込んだ。Entity Frameworkはデータベースのビジネス要件を満たしつつ、効率的で保守しやすいプログラムコードを記述するという双方のバランスを、O/Rマッピングとは異なるアプローチをとって解決した。 「概念モデル」というデータモデルを導入することで開発者はデータを操作するときに、より抽象化されたオブジェクト(=エンティティ)で作業ができ、従来よりコードの少ないアプリケーションの作成と保守が可能になった[1]。

技術

概念モデル

概念モデル (en:conceptual model) とは、データ設計の過程において、システム上で必要となるデータを実体 (エンティティ) と関連 (リレーション) で定義するデータモデル。一般的なデータ設計ではここからさらに論理モデルへ落とし込みこれをオブジェクト指向プログラミング上のオブジェクトとして扱い、さらに物理モデルがデータベース内の実データとして扱われるが、Entity Frameworkでは概念モデルのレベルでデータを扱うことで、開発者がより低いレベルにあるデータモデルを意識せずにコーディングができる[1]。実装はドメイン固有言語 (DSL) の一種である概念スキーマ定義言語 (CSDL) で記述される。

Entity Data Model(EDM)

Entity Frameworkにおいて、概念モデルと論理モデル、そしてこれらのマッピングを含めたデータモデルを総称してEntity Data Model(EDM)と呼ぶ。ビジネス要件上、リレーショナルデータベース以外でもテキストファイルやXMLファイルなどさまざまな形式のデータを扱えるようにしたい課題があった。従来はそれぞれのデータ形式に対応するコーディングを開発者が行わなければならなかった。この問題をEDMが解決している。概念スキーマ定義言語を用いてデータ形式問わずにデータから概念モデルへマッピングすることができ、これによりさまざまなデータに対しスケーラビリティの効率性を損なうことなく、効率的で保守性に優れたコードを作成することが可能となる[3]。

開発アプローチ

  • データベースファースト : 既存のデータベースからデータモデルを自動生成するアプローチ。
  • モデルファースト : デザイナーUI上で定義したEntity Data Modelからデータベースを自動生成するアプローチ。
  • コードファースト : POCOからデータベースを自動生成するアプローチ。

マイグレーション

開発中にデータモデルの変更(データベースのテーブルレイアウト変更など)が発生した場合、アプリケーション内のオブジェクトとデータベース構造を両方に変更を施すことで全体の整合性を保つ機能。Entity Frameworkでは自動的にデータモデルの変更を検知して常に最新の状態へ移行する自動マイグレーションと、コマンドを発行することで任意のタイミングで移行を実行してくれるコードベースマイグレーションがある。

出典

  1. 1 2 3 4 “MSDN - エンティティ フレームワークの概要”. MSDN. 2017年6月4日閲覧。
  2. 1 2 山田 祥寛『ASP.NET MVC 5 実践プログラミング』秀和システム、2014年9月20日。ISBN 9784798041797。 
  3. ↑ “MSDN - Entity Data Model”. MSDN. 2017年6月9日閲覧。

関連項目

  • 統合言語クエリ
  • ADO.NET
  • 実体関連モデル
  • データモデル
  • .NET Framework
.NET
アーキテクチャ
  • 共通言語基盤
  • アセンブリ
  • メタデータ
  • マネージコード
  • 基本クラスライブラリ
  • .NET Standard
  • 仮想実行システム
  • Roslyn
  • Native AOT
共通言語基盤
  • 共通言語ランタイム
  • 共通型システム
  • 共通中間言語
  • 動的言語ランタイム
言語
  • C#
  • Visual Basic .NET
  • F#
  • PowerShell
  • C++/CLI (マネージ拡張)
  • †J#
  • JScript .NET
  • IronPython
  • IronRuby
  • Nemerle
  • Boo
  • PiechPie / †Phalanger
  • †Cω
  • †Spec#
パッケージマネージャ
  • NuGet
  • myget
  • ProGet
関連技術
  • Azure
  • MAUI
  • †Xamarin
  • Blazor
  • Aspire
  • Uno Platform
  • †UWP
  • Avalonia UI
  • WPF
  • WCF
  • WF
  • WCS
  • Windows Forms
  • ASP.NET
  • ADO.NET
  • ASP.NET MVC Framework
  • Entity Framework
  • ClickOnce
  • XAML
  • †Silverlight
  • LINQ
  • †.NET Remoting
  • MSBuild
  • XSP
  • ML.NET
  • Windows UI Library(Windows App SDK)
その他のCLI実装
  • †.NET Core
  • .NET Framework
  • Mono
  • シェアードソースCLI
  • Portable.NET
  • .NET nanoFramework
  • .NET Micro Framework
  • .NET Compact Framework
  • †Microsoft XNA
組織
  • .NET Foundation
  • Microsoft
  • Xamarin
開発環境
  • Visual Studio
  • Visual Studio Code
  • JetBrains Rider
  • MonoDevelop / Xamarin Studio
  • SharpDevelop
その他
  • async/await
  • MVVM
  • ReactiveX
カテゴリ カテゴリ
マイクロソフトのAPIとフレームワーク
グラフィック
  • Desktop Window Manager
  • Direct2D
  • Direct3D (拡張)
  • GDI / GDI+
  • WPF
  • Silverlight
  • WinUI
  • Windows Color System
  • Windows Image Acquisition
  • Windows Imaging Component
オーディオ
  • DirectMusic
  • DirectSound
  • DirectX plugin
  • XACT
  • Speech API
マルチメディア
  • DirectX (Media Objects
  • Video Acceleration)
  • DirectInput
  • DirectPlay
  • DirectShow
  • Image Mastering API
  • Managed DirectX
  • Media Foundation
  • XNA
  • Windows Media
  • Video for Windows
ウェブ
  • MSHTML
  • EdgeHTML
  • RSS Platform
  • JScript
  • VBScript
  • BHO
  • XDR
  • SideBar Gadgets
データアクセス
  • Data Access Components
  • Extensible Storage Engine
  • ADO.NET
  • ADO.NET Entity Framework
  • Sync Framework
  • Jet Engine
  • MSXML
  • OLE DB
  • OPC
ネットワーク
  • Winsock (LSP)
  • Winsock Kernel
  • Filtering Platform
  • Network Driver Interface Specification
  • Windows Rally
  • BITS
  • P2P API
  • MSMQ
  • MS MPI
コミュニケーション
  • Messaging API
  • Telephony API
  • WCF
管理
  • Win32 console
  • Windows Script Host
  • WMI
  • PowerShell
  • Task Scheduler
  • Offline Files
  • Shadow Copy
  • Windows Installer
  • Error Reporting
  • Event Log
  • Common Log File System
コンポーネントモデル
  • COM
  • COM+
  • ActiveX
  • Distributed Component Object Model
  • .NET Framework
ライブラリ
  • Base Class Library (BCL)
  • Microsoft Foundation Classes (MFC)
  • Active Template Library (ATL)
  • Windows Template Library (WTL)
デバイスドライバ
  • Windows Driver Model
  • Windows Driver Foundation
    • KMDF
    • UMDF
  • WDDM
  • NDIS
  • UAA
  • Broadcast Driver Architecture
  • VxD
セキュリティ
  • Crypto API (CAPICOM)
  • Windows CardSpace
  • Data Protection API
  • Security Support Provider Interface (SSPI)
.NET
  • ASP.NET
  • ADO.NET
  • Base Class Library (BCL)
  • Remoting
  • Silverlight
  • TPL
  • WCF
  • WCS
  • WPF
  • WF
ソフトウェアファクトリー
  • EFx Factory
  • Enterprise Library
  • Composite UI
  • CCF
  • CSF
IPC
  • MSRPC
  • Dynamic Data Exchange (DDE)
  • Remoting
  • WCF
アクセシビリティ
  • Active Accessibility
  • UI Automation
テキストと多言語
サポート
  • DirectWrite
  • Text Services Framework
  • Text Object Model
  • Input method editor
  • Language Interface Pack
  • Multilingual User Interface
  • Uniscribe
人工知能
  • DirectML
  • 一覧
  • カテゴリ:マイクロソフトのAPI
「https://ja.wikipedia.org/w/index.php?title=Entity_Framework&oldid=108469188」から取得
カテゴリ:
  • データベース
  • マイクロソフトのAPI
  • .NET
  • マイクロソフトのフリーソフト
  • Apache Licenseのソフトウェア
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.