Entity Framework 7 RC1 Available

  Entity Framework 7 RC が公開されたのでご報告   ドキュメント docs.efproject.net. チュートリアルはこちらです。 Full .NET (Console, WPF, WinForms, and ASP.NET 4) Universal Windows Platform (UWP) ASP.NET 5 OSX Linux   サポート対象のデータベース 以下のDBプロバイダが提供されています。 EntityFramework.MicrosoftSqlServer EntityFramework.SQLite EntityFramework.InMemory EntityFramework.SqlServerCompact40 EntityFramework.SqlServerCompact35 EntityFramework.Npgsql プロバイダの詳細はこちら:providers page   EFのパッケージはNuGetからインストールできます。パッケージマネージャーコンソールでこんなコマンドをたたきます。 Install-Package EntityFramework.MicrosoftSqlServer –Pre   EF7が活用されるシチュエーション EF 7は.NET CoreやUWPなどを意識して大きく仕様を変更しました。EF6の互換性はなく、機能の一部も実装されていません。そのため既存のアプリケーションをEF6からEF7にアップグレードすることを推奨しません。 特に次のパターンで利用することを推奨します。 新しいアプリケーション、特にEF7で実装されていない機能を必要としないもの UWPやASP.NET 5 のような .NET Coreをターゲットにしたアプリケーション  …

0

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

概要編 全体像 ADO.NET ADO.NET Entity Framework LINQ 応用編 ADO.NET Entity Framework 全体像 DBファースト、モデルファースト LINQ (Language Integrated Query) は、.NET Framework 3.5 で導入された革新的な機能で、オブジェクトの世界とデータの世界の間の橋渡しをするものです。 従来、データに対するクエリは単純な文字列として表され、コンパイル時の型チェックや IntelliSense のサポートは利用できませんでした。 また、RDB、XML 、.NET コレクションオブジェクト、Web サービスなど、データ ソースの種類に従って異なるクエリ言語を習得する必要がありました。 LINQを用いることでデータソースの種類に関わらず、一貫したSQL ライクな構文を用いて、完全な型チェックと IntelliSense のサポートが有効になります。LINQが扱うデータソースは非常に多岐にわたりますが、実際にLINQが直接扱うものは.NETのオブジェクトになります。したがって異なるデータソースを扱うには専用のデータプロバイダが必要になります。このデータプロバイダがデータソースの差異を吸収(.NETのオブジェクトに変換)してくれるため、LINQはデータソースの種類にかかわらず同じ構文でデータを操作することができるのです。 LINQライブラリにはデフォルトで5つのプロバイダが提供されています。これにはddADO.NETや、ADO.NET Entity Frameworkの オブジェクトが含まれます。加えて LINQ で扱うことの出来るデータソースは、RDBに関連するものばかりではありません。例えば、LINQ to Objectsは、LINQのデータソースとして.NETオブジェクトを扱うためのものですし、LINQ to XMLはXMLドキュメントをデータソースとして扱うものです。つまり、LINQはデータベース処理のみでなく、プログラムのあらゆる場面で有効で、それまでの処理に対して補完的な立ち位置であることを意味します。                                                       図3 LINQ全体像 x 1: int[] numbers = new int[7] { 0,…

0

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

概要編 全体像 ADO.NET ADO.NET Entity Framework LINQ 応用編 ADO.NET Entity Framework 全体像 DBファースト、モデルファースト   概要編:ADO.NET ADO.NETでサポートされるデータアクセス手法は2種類(接続型と非接続型)あります。これらは同じADO.NETのライブラリで実装されていますが、それぞれがまったく異なる方法でデータストアに対してアクセスします。 接続型の特徴はデータベースとの接続を(Connectionオブジェクトを用いて)確立し、(Commandオブジェクトを用いて)データベースへコマンドを実行し、データに関する処理を行う時間も含めてデータアクセスが終わるまでの間データベースとの接続を維持し続けることにあります。こうした手法は、従来のADOなどでも採用されており、データベースとの通信頻度が少ない場合は向いています。しかし、マルチユーザー環境において複数のユーザーから大量のデータ処理(抽出、更新)が行われる場合や、あるいは検索処理のため長時間にわたりサーバー上のデータを保持する場合(結果、サーバーとの接続時間が長くなります)などには、パフォーマンス、サーバーリソース(ネットワークやロック)の消費や、拡張性といった問題が発生する場合が多いと言えます。また、ビジネスロジックが複雑になるにつれて、設計や保守を行うことが難しくなる傾向にあり、場合によってはプレゼンテーション層、データ層との分離も困難になる可能性があります。 接続型は、パフォーマンスが要求される定型的なバッチ処理や、更新が頻繁に行われるトランザクション処理に対して利用することが適切だと言えます。   非接続型の特徴は、データベースアクセスに対してSQLを使用するという面は同じですが、接続型のように直接データベースへの接続を開かず、(DataAdapterオブジェクトを用いて)DataSetと呼ばれるクライアントに存在するインメモリオブジェクト内にデータをバッファリングする時のみ接続を開き、データの充填が終わると接続を閉じます。 クライアントやビジネスロジックの中で行われるデータへの操作は、データベースへの接続を閉じた状態で行うため、サーバーリソースの効率的な運用が可能になります。また、クライアントで実際に使用するデータはDataSet内のオブジェクトであることから、データソースの多様化に対応できることも大きなメリットです。特にプレゼンテーション、ビジネスロジック層など、多階層のアプリケーションを設計する場合、このDataSetをオブジェクトとして渡すことが可能でありDTO(Data Transfer Object)として利用することができます。 逆に「非接続型」での更新処理は少々面倒です。これはDataSet内に充填されたデータを更新する場合、更新されたデータをすべてデータベース側に反映する必要があるためです。(全てのデータをデータベースへ書き戻すのではなく、変更があったデータのみを効率的にデータベースへ書き戻すための変更管理の仕組みが搭載されています)この際、接続が維持されていないために排他ロックも保持できないということから、当該データの値が、別のユーザーによって既に更新されているという状況が想定されます。そのために、いわゆる楽観的同時実行制御という仕組みを考慮しなければなりません。したがって頻繁に更新が行われ、それを直ちにデータベースに書き戻すことが要求される処理にはあまり適しません。また非常に大量のデータを扱う場合には、クライアント側でそれを一時的に保持するためのリソースが必要です。 非接続型は、複数ユーザーの利用が想定される、Webアプリケーションなどで利用することが適切だと言えます。                            図1 ADO.NET の全体像   .NET Framework 4.5 では ADO.NET に非同期プログラミングなどの新しい機能が追加されています。 MSDN: ADO.NET の新機能 http://msdn.microsoft.com/ja-jp/library/ex6y04yf(v=vs.110).aspx   Note : ADO.NETの詳細についてはMSDNライブラリを参照してください。 MSDN : ADO.NET http://msdn.microsoft.com/ja-jp/library/e80y5yhx.aspx

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 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

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