.NET Framework 4.5 におけるデータ アクセスの概要 その 3 ~ ADO.NET Entity Framework ~

概要編 全体像 ADO.NET ADO.NET Entity Framework LINQ 応用編 ADO.NET Entity Framework 全体像 DBファースト、モデルファースト   ADO.NET Entity Framework が登場した背景 リレーショナルデータベースを利用したアプリケーション開発を難しくしている要因として、C#やVB.NET 等をはじめとするオブジェクト指向言語が扱うデータの構造(オブジェクト データモデル)と、データベースが扱う正規化されたデータの構造(リレーショナル データモデル)が異なるという点があります。このことは、インピーダンス ミスマッチ問題として一般的に知られており、アプリケーション開発者はデータモデル間の差異を吸収するためにマッピングコードを実装する必要がありました。加えて保守、管理も考慮すると、昨今のシステムにおける大きな負担になっていると言えます。 ADO.NET Entity Frameworkは、リレーショナルデータモデルとは独立した形で、アプリケーションが使用するデータ(Entity)を概念モデルとして定義し、データ操作することができます。この概念モデルはEntity Data Model(EDM)とよばれており、開発者が柔軟にモデリングすることが可能です。また、ここで作成したEntityはADO.NET 非接続型と同様に、多階層のアプリケーションを開発する場合、オブジェクトとして渡すことが可能でありDTO(Data Transfer Object)として利用することも想定されます。アプリケーションを開発する際には、作成したEDMに対してデータ操作のための実装を行うことになります。 ADO.NET Entity Framework は提供開始から非常に多くのアップデートが行われたため、その一部をご紹介します。 ・最新版はNuget経由で入手 http://www.nuget.org/packages/EntityFramework/ ・計量なクラスライブラリが提供され6倍以上パフォーマンスが向上 ・3つの開発スタイルを提供(データベースファースト、モデルファースト、コードファースト)      ・新しいプラットフォームへの対応(Windows ストアアプリ, Windows Phone、 Mono ・RDB以外のストレージへの対応(Azure Table Storageのようなnon-relationalなデータストアへの対応) ・クラウドを意識した接続のリトライ処理と非同期処理   ADO.NET Entity Frameworkを用いることで、開発生産性、及び保守性の向上が期待できます。また、ADO.NET Entity Frameworkは、マイクロソフトの大きな投資対象になっていることも注目すべきです。事実、.NET…

0

.NET Framework 4.5 におけるデータ アクセスの概要 その1

新しい.NETのデータアクセスに関してまとまった日本語ドキュメントがあまりないかったので、このブログでシリーズ化してみようと思います。   内容はこんな感じで考えています。(変更する可能性はおおいにあり) 概要編 全体像 ADO.NET ADO.NET Entity Framework LINQ 応用編 ADO.NET Entity Framework 全体像 DBファースト、モデルファースト   概要編:全体像 はじめに .NET ではアプリケーションからデータベースへアクセスするために、様々なテクノロジーを提供しています。.NET Frameworkを提供する以前は、DB-Libraryに代表される高速かつデータベースサイドに近い低レベルAPIを提供しました。その後、RDBを抽象化するODBC(Open DataBase Connectivity)、Visual BasicからのアクセスをサポートしたDAO(Data Access Objects)、ユニバーサルデータアクセスを実現したADO(Active Data Objects)など、言語や環境、あるいはその時代背景に合わせて、新たなテクノロジーを常に提供しています。当然、アプリケーションを開発する際は、こうして用意された様々なテクノロジーから適切なものを選択して実装する必要があります。そして、この状況は.NET Frameworkを使用してアプリケーションを開発する場合においても同様です。現時点で.NET Framework環境においてC#、VB.NETでデータアクセスをする場合に、検討すべき技術は以下の3つに集約できます。   ADO.NET OLE DB や ODBC 経由で公開されるデータソースだけでなく、SQL Server や XML などのデータ ソースに対する一貫性を持ったアクセス機能を提供します。.NET Framework初期から導入されたテクノロジーであり、最も低レベルのAPIを提供します。   ADO.NET Entity Framework .NET Framework 3.5 SP1で追加されたデータベースアクセステクノロジーです。開発者はリレーショナルスキーマに対して直接プログラミングする代わりに、概念モデルに対してプログラミングすることで、データ アクセス アプリケーションを作成できます。その目的は、アプリケーションに必要なコードの量と保守作業の量を減らすことです。.NET 3.5…

0

Entitiy Framework 6.0.2 RTM Available

2ヵ月前にEF 6.0 をリリースしたばかりですが、バグ修正とパフォーマンス改善を行った EF 6.0.2 がリリースされました。   EF6.0.2 の取得方法 ランタイム NuGet 経由で取得してください。コードファーストだけをお使いであれば、ランタイムだけでOK、ツールは不要です。 インストール方法はこちら。   ツール Visual Studio 2012/2013 はダウンロードセンターから入手できます。 モデルファースト/データベースファーストで開発する場合にはインストールが必要です。   EF 6.0.2 での修正点 6.0.2 パッチは機能的な問題の修正とパフォーマンスの改善が実装されています。 全ての修正リストはこちら  

0

EF6 RTM Available

Visual Studio 2013 RTM  が公開され、日本時間 2013/11/14 深夜 0:00 より オンラインで Virtual Launch Event があります。夜更かし Welcome な開発者は参加されてはいかがでしょうか? そして待ち望んでいたEntity Framework 6 (EF6)の開発が完了しました!!EF6はクラウドでの利用を意識した機能が豊富にあるので開発効率も上がると期待。ツールの方はVisual Studio 2012、Visual Studio 2013 で利用できます。   EF6の入手 ランタイム: NuGet から取得できます。こちらを参考にインストールしてください。ちなみにコードファーストを使うだけであればツールのインストールは不要です。 ツール: Visual Studio 2013 にはデフォルトで機能が入っています。Visual Studio 2012 をお使いであればダウンロードセンターから入手してください。モデルファースト、データベースファーストで開発する場合、インストールしておくと便利な機能があります。 ※ 以前のバージョンのEFからEF6へ移行を検討の方はこちらをご確認ください。   EF6についてはこのブログで紹介してきましたが、今日いろいろと検証してみようと思います。日本語情報が少ないので以前のバージョンも含め全体的にまとめた方がよいかもしれませんね。 英語ですがこちらに新機能の詳細が記載されています。   Async Query & Save (EF Designer & Code First)      Async ,…

0

クラウド時代のデータアクセス部門エース候補:EF6 RC(Release Candidate)提供開始

Entity Framework (EF) 6 リリース候補版の提供を開始しました。 NuGet Entity Framework 6 Tools RC1 for Visual Studio 2012   クラウドでは非同期I/Oやコネクションの自動リカバリなど重要でハマりどころだったりしますが、EF 6にはそんな機能がデフォで含まれているので便利です。機能リストはこちらで確認してください。   正式リリースはVisual Studio 2013と同じタイミングを予定しています。   ちなみに EF 5については福井さんが Deep Dive セッションやってらっしゃいますね。 http://www.slideshare.net/afukui/entity-framework-deep-dive-afukui

0

EF6 Alpah 1 が公開されています

MSは相変わらず結構なリソースを投入して Entity Framework(EF) の強化を継続していますね。 ただ米国ではやる気を感じるのですが、日本ではあまり情報発信が出来ていないようですみません。 MCAホルダーの福井さんにも怒られました・・・   さて、2012/11時点で正式版としてリリースされているのはEF5です。以前のポストでさらっとご紹介しました。 そして先日、EF6 Alpha 1 がNuGetで公開されました! http://nuget.org/packages/entityframework (Thursday, October 25, 2012) まだ、a very early preview らしく、significantly prior to the final release of EF6 なので、不具合がいろいろとあるかもしれませんが、広い心でご利用ください。 実プロジェクトでは使わないでくださいねw   EF6では大幅に機能強化されています。さらっと・・・ Async Query and Save  タスクベースの非同期パターンに対応しました。ウォークスルーもあるのでトライしてみてください。さらなる詳細はこちらです。   Custom Code First Conventions ルールセット(プライマリーキー、テーブル名など)を指定できる Convention という機能がありました。 これに新しく独自のルールを定義できるCustom Conventionが使えるようになっています。 ウォークスルー あるので試してみてください。さらなる詳細はこちらを参考にしてください。   Multi-Tenant Migrations 以前はマイグレーションを行うときに、1つのDBインスタンスに対して1つのモデル(DbContext) で管理する必要がありました。EF6ではで1つのDBインスタンスに対して、複数のモデルを扱えるようになっています。さらなる詳細はこちら….

0

Entity Framework 5 (EF5) が遂にリリース–そして EF 6へ

Visual Studio 2012 のリリースに合わせて、EF5が完成しました。 Visual Studio 2010 ユーザーも Entity Framework NuGet package から利用できます。 ただし新しく追加されたほとんどの機能は .NET 4.5 ベースなのでご注意ください。   EF 5の強化ポイント Enum をサポート Spatial データ(DbGeography、DbGeometry型)をサポート パフォーマンスアップ (以前のブログで紹介しました) Code First から デフォルトDBの自動探知(以前は SQL Express のみだったか LocalDb でも OK)をサポート Visual Studio 2012 は LocalDbを含む、Visual Studio 2010 は SQL Expressを含む 既存DBに対して、コードファースト からテーブルの追加   Visual Studio 2012  の強化ポイント EF デザイナがデフォルトで…

0

Visual Studio 11 Beta 公開! EF 5が試せます。 CLR/Hのデータアクセステクノロジデイフォローアップ

以前、ブログでアナウンスしましたが北海道CLR/Hでデータアクセステクノロジデイが開催されました。そこで Entity Framework 最新情報(EF 4.3、EF5)についてセッションを担当させて頂いたので、その内容をサクッとご紹介しておきます。 ちなみに、セミナー資料はこちらです。       ■EF4.3の強化ポイント ・Database Generationの改善 ・Code First & DbContext bug fixes     -  GetDatabaseValues のバグ修正     -  DbSet の名前に Unicode が使えなかったバグ修正 ・Code First Migrations   EF4.3 ではCode First Migrationsに対応したの大きいですね。これでDBのスキーマを更新した時のデータ移行にも対応出来るようになりました。実装方法は2種類(Automatic Migration、Code-Based Migration)あります。   ○Automatic Migration – 自動マイグレーション – 自動化の対象 •プロパティやクラスの追加 •プロパティやクラス名称の変更 •プロパティやクラスの名称変更をせずに、カラムやテーブル名称の変更 •プロパティの削除   ○Code-Based Migration – データの投入、インデックス、ユニーク、デフォルト値の指定など細かい制御が可能  …

0

日本語を含むEF 4.1言語パックがリリースされました

以前のBlog(ADO.NET Entity Framework 4.1 (EF4.1) RTW ついにリリース)でもふれましたが、日本語を含むEF 4.1の言語パックが公開されています。さぁ、さっそくインストールして検証しよう、と思ったわけですが Mango、Azure、SL、EF、WCF DS など度重なるベータ版インストールによりPC環境がこわれました(泣)。よって検証できてないので翻訳ベースになりますがご了承ください。   ■System Requirement OS: Windows 7, Windows Server 2003, Windows Server 2008, Windows Vista Architecture: x86; x64 EF 4.1の言語パックをインストールする前にEF 4.1をインストールしてください。   ■言語パックに含まれるもの DbContext 、Code First API のリファレンス エラーメッセージ DbContext Generater テンプレート   ■サポートする言語 Chinese (Simplified) Chinese (Traditional) French German Italian Japanese Korean Russian Spanish…

0

Microsoft Entity Framework June 2011 CTP が公開されました

今日からマイクロソフトは新年度になります。会社内の組織は大きく変わりましたが私自身は悲しいのか、嬉しいのかポジションチェンジはありません。まぁ、前年度とかわらないため仕事にはある程度慣れてはいるわけで、、出来ることを少しずつ増やしていきたいと思います。今後もデータアクセス系の技術情報はこの Blog でご紹介していきますので引き続きよろしくお願いします。   さて、さっそくですが ADO.NET team blog にもある通り Microsoft Entity Framework June 2011 CTPが公開されています。VS2008/.NET3.5 SP1 で登場し、VS2010/.NET4 で多くの機能が追加された Entity Framework ですが、まだまだ機能や品質の面で十分ではないというフィードバックもありました。今回の Update でランタイム、デザイナの両方でさらなる強化が行われています。公開された CTP をインストールすると、強化ポイントをいち早く体験することができます。   ■ランタイムの強化 enum データ型のサポート デザイナによるモデリング、コードファースト、LINQ がサポートされます。 詳細:http://blogs.msdn.com/b/efdesign/archive/2011/06/29/enumeration-support-in-entity-framework.aspx spatial データ型のサポート デザイナによるモデリング、LINQ がサポートされます。例えば2箇所のロケーションの距離を計算するといった面倒な操作も LINQ で処理できます。 詳細:http://blogs.msdn.com/b/efdesign/archive/2011/05/04/spatial-types-in-the-entity-framework.aspx table-valued functions のサポート EDM に table-valued functions を追加できます。またL追加した関数を LINQ で処理できます。 詳細:http://blogs.msdn.com/b/efdesign/archive/2011/01/21/table-valued-function-support.aspx Stored procedures の改善 ストアドプロシージャは EDM の中に複数の結果セットを持つことができます。…

0