.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

EF6 Beta 1 が公開されました。

  EF6 Beta1が公開されています。 ・ランタイム(Nuget)   ・ツール(MS Download Center) ※ツールはモデルファースト、DBファーストで開発する際にインストールしてください。コードファーストではツールのインストールは不要です。 EF6については、去年のVSUGで少し話しました。 Vsug ef from Microsoft

0

Tech days 2010 デモのフォローアップ 1 【T2-305 ADO.NET Entity Framework】

昨日は Tech Days セッションにご参加頂いた皆様、誠にありがとうございます。 今日から数回にわたってセッションのフォローアップさせて頂きます。 まだ Tech Days も終わっていないので、まずはありものから・・・・・・・・・     ■デザイナ編 ・複数化 ・外部キー ・モデルファースト ・複合型 ・WPF連携     ■関数編 ・遅延ロード ・LINQ to Entities Functions(デモなし) ・Native SQL(デモなし)     ■アーキテクチャ編 ・POCO      – Visual Studio 2010 EF4 POCO Part1      – Visual Studio 2010 EF4 POCO Part2      – Visual Studio 2010 EF4 POCO Part3…

0

Visual Studio 2010 Beta 2 用 ADO.Net Entity Framework Community Technology Preview リリース!

今日は Microsoft Developer Forum 2009 でしたね。私は会場ではなく自席で Streaming 視聴しました。 Smooth Streaming は相変わらずスゴイですね。 画質が綺麗だし、巻き戻し再生もできる。MS 社員としてではなく単純に利用者として普及してほしいテクノロジーです。 Developer Forum では主に UX、Cloud  が目立っていたように感じました。 大丈夫です、ちゃんと データアクセスも目立たない・・・ところで強化されています。   このたび VS 2010 Beta2 用の Microsoft ADO.NET Entity Framework Feature Community Technology Preview 2 がリリースされました。  下記の機能が含まれています。 Templates for Self-Tracking Entities (N-Tier support) Code-Only Programming Model that allows you to write Entity Data Model based…

0

データアクセスもさらに強化!! Visual Studio 2010 Beta2

いろいろと旅をしており、すっかりブログの更新をさぼってしまいました。すみません。 ようやくVisual Studio 2010 Beta2 が公開されましたね。まだ英語版だけですが、近いうちに日本語版も出てくると思います。データアクセス系も近々、検証していきたいと思います。 http://msdn.microsoft.com/en-us/vstudio/default.aspx   また、業務の都合上PHPも関連をキャッチアップする必要が出てきたため、Blogでも情報公開していきたいと思います。このBlogでは特にPHP on Azureにフォーカスして情報を提供したいと思います。(多分、興味ない方も多いので、次回からはタイトルに「PHP」、タグに「PHP」を明示しておきます)。 ちなみにマイクロソフトのオープンソースへの取り組みの全体については、下記のブログを参考にしてください。 http://blogs.technet.com/port25j/       尚、PHP on Azure について、ようやく情報が揃ってきたといった状態です。ここで簡単にまとめておきましょう。  ・データアクセス SQL Server Driver for PHP 1.1 ようやくSQL Azureに対応したDriverがリリースされました。(SQL Server Driver for PHP 1.0は対応していません。) 本バージョンよりUTF-8もサポートされました。多少イジルと便利なOSSもAzure上で使えるようになります。 http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9   Microsoft SQL Server Driver for PHP Team Blogのブログは以下 http://blogs.msdn.com/sqlphp/     ・開発環境 Visual Studio 2008 残念ながらVisual Studio では効率的な開発ができないため、アシアルさんなどが提供している3rd パーティ製の製品を利用して頂く必要があります。…

0

Teched 2009 フォローアップ4 【TH-302 ADO.NET Entity Framework vNext】

最近は涼しいですね。もう秋ですか?私の場合、仕事してたら、、、いつの間にか夏が終わっていた(泣)といった感じです。海に行ってません、そもそも日にあたっていません、当然、日焼けもしていません。でも日焼けってあまり人体にはよくないみたいですね。簡単に調べてみました。   ・免疫機能   風邪をひきやすくなる。ヘルペス発症などなど ・皮膚  皮膚の老化を促進、皮膚ガンをまねく ・視力  視力の衰え、白内障   メリットもあるようです。 ・ビジュアル 健康的、活動的、爽やかな印象、シャープに見える。 ・免疫機能 風邪をひきにくい、疲れがたまりにくい、皮膚アレルギーへ効果・・・あれ???? ・精神疲労の回復   う~ん、微妙ですね。日焼けについては専門家にまかせるとして、この夏、多くの時間を費やしたVisual Studio 2010ネタをフォローアップしておきましょう。今日は前回、ご紹介できなかったTech・Ed TH-302で解説した関数のフォローアップをしたいと思います。   ■Canonical Functions Entity SQL 関数をLINQ to Entitiesでも利用できるようになりました。セミナー中ではLINQ to Entitiesサポート対象外の関数の代替として利用すると便利です。という話をしました。  具体的に、下記を実行するとAddDays関数未サポートのためエラーが発生します。   var query = from o in db.Orders             select new             {                 o.OrderCode,                 OrderDate = o.OrderDate.AddDays(1)             };    そこで下記のように書き換えました。…

0

Teched 2009 フォローアップ3 【TH-302 ADO.NET Entity Framework vNext】

前回のPostから気になるフィードバックがありました。「年齢と共に睡眠時間が減っているような気がする」というコメントです。確かにそんな気がしますね。私、幼い姪と甥がおりますが、長時間寝ています。飼い猫にいたっては9割方寝ていますね。ということで、ちょっと一般的論を調べてみたのでご参考まで。。。。。   ・睡眠時間は年齢とともに変化していくのが正常 ・睡眠にはレム睡眠(浅い眠り)とノンレム睡眠(深い眠り)が存在 ・20代からレム睡眠の時間が増加 ・30代からは完全な目覚め及び、目覚めている時間も増加(夜中、目が覚めてしまう) ・40代以降からは目覚めてから眠れなくなることを経験(夜中、目が覚めて眠れなくなる) ・猫の語源は「寝子」。語源の通りよく寝る。   年齢とともに睡眠の質がおちているようですね。みなさんはいかがでしょうか。個人的には、今のところ寝付きが悪いだけです。   今日はTech・Edのセッション「TH-302 ADO.NET Entity Framework vNext ~ Visual Studio 2010 における新機能のご紹介~」のフォローアップです。Tech・Edはカレントテクノロジー中心なので、新しいテクノロジーネタで、ここまで深くやったのも、このセッションくらいだと思います。ここでは下記のように6つの新機能をご紹介しました。基本的には私のブログで紹介しているのでリンクをご覧ください。関数については一部不足があるため、後日フォローアップします。   ■EDMデザイナ ・モデルファースト ・Pluralization ・Complex Type ■Entity Framework 本体 ・POCO –      Visual Studio 2010 EF4 POCO Part1 –      Visual Studio 2010 EF4 POCO Part2 –      Visual Studio 2010 EF4 POCO Part3 ・遅延ロード ・関数 –     …

0

Teched 2009 フォローアップ2 【T2- 309 ADO.NET Entity Framework and LINQ データアクセス開発】

お疲れさまです。昨晩は気温が低く仕事も一段落したこともありグッスリ眠れました。9時間くらい寝ましたね。私、6時間くらいは睡眠時間が必要な人間です。みなさんはいかがでしょうか?以前、どこかで見かけた調査結果によると日本人は平均的に睡眠時間がかなり少ないようです(たしか6時間くらい)。例えばオーストラリアは平均8時間睡眠のようです。8時間毎日はちょっと長い気がしますね。個人的には短時間睡眠で活動的な人が羨ましいです。数年前、慣れれば短時間睡眠でも生活可能だと考え、一週間ほど4時間睡眠にチャレンジしました。。。。。。。結果、仕事どころではありませんでしたね。   今日はTech・Ed 2009【T2- 309 ADO.NET Entity Framework and LINQ データアクセス開発】のフォローアップです。このセッションでは以下の3点について解説しました。 ・概念モデリング ・パフォーマンスチューニング ・例外処理(‘楽観的同時実行処理)   1.    デモ環境の準備 デモで使用した環境は以下の通りです。 ・Windows 7 RTM ・Visual Studio 2008 SP1 ・SQL Server 2008 Express Edition ・データベース School サンプル データベースの作成 (Entity Framework クイック スタート) http://msdn.microsoft.com/ja-jp/library/bb399731.aspx   2.    概念モデリング 概念モデリングについては下記のチュートリアルをご確認ください。セッションと略、同じ内容です。 http://msdn.microsoft.com/ja-jp/library/cc716693.aspx   3.    パフォーマンスチューニング 下記4点ついて、解説しました。 ・View Generation http://msdn.microsoft.com/ja-jp/library/bb896240.aspx   ・NoTrackingオプション http://msdn.microsoft.com/ja-jp/library/system.data.objects.mergeoption.aspx デモでは下記のように定義しました。…

0

Teched 2009 フォローアップ1

お久しぶりです。Tech・Ed 2009も無事に終了しました。私のセッションは立見が出るほどの盛況となり、ご参加頂いた方々には改めて感謝感謝です。 また、ハイレベルなMVP、Developerの方々とのコミュニケーション、非常に充実したものとなりました。感謝感謝です。   尚、今回セッションで利用した最新の資料をSkyDriveに公開しました、必要あればダウンロードしてください。 ・T2- 309 ADO.NET Entity Framework and LINQ データアクセス開発 ・TH-302 ADO.NET Entity Framework vNext ~ Visual Studio 2010 における新機能のご紹介 ~   Demo プログラムなどは週いっぱいくらいかけてフォローアップしたいと考えています。  

0

【お知らせ】Tech・EDセッションの詳細

この夏、皆様いかがお過ごしでしょうか。私、子供の頃は夏休みが待ち遠しくて仕方なかったのですが、最近はちょっと憂鬱です。とにかく暑くって眠れないんです。冷房つけると風邪ひくしで・・・・そして夏休みもTech・Edの準備でとれそうもありません。という愚痴モードではじめてみました。社会人失格ですね(汗)。 ということで(何が?)、今日は夏休みをつぶしてご用意している、2セッションの中身をご紹介したいと思います。   ■ADO.NET Entity Framework and LINQ データ アクセス開発 このセッションは@itでも注目セッションとして紹介して頂いています。ここでは、業務アプリケーションでADO.NET Entity Frameworkを使って頂く際、どんなネタが一番役立つだろう・・・・・・・・と試行錯誤した結果、「モデリング」、「パフォーマンスチューニング」、「例外処理」をご紹介することとしました。ネタとしては非常に地味です。同じ時間帯にMS重鎮、赤間さんのセッション等あります。私はこじんまりと小さい部屋で粛々と実施するのでお時間あればご参加ください。   ■ADO.NET Entity Framework vNext ~Visual Studio 2010 における新機能のご紹介~ こちらはシアターセッション(テクニカルセッションより若干ディープ)です。実は、このセッションこそ非常に注目して頂きたセッションです。今までもブログでご紹介してきた通り、VS2010でEntity Frameworkは劇的に進化します。(正直なところVS2008ではv1ということもあり若干荒削りなとこも目立ちました。)USのBlogを見ていても、大きな投資が行われたことは良く分かります。セッションオーナーからは「■ADO.NET Entity Framework and LINQ データ アクセス開発のリピートでもいいよ♪」と言われましたが、是非ご紹介したく別で準備させて頂くに至りました。内容としては、POCO、遅延ロード、モデルファースト、関数などなど、そしてMicrosoft ADO.NET Entity Framework Feature Community Technology Preview 1の内容までお伝えしたいと思います。ただし、こちらも同じ時間帯にWindows 7やAzureの新機能セッションがあります。私はこじんまりと小さい部屋で粛々と実施するのでお時間あればご参加ください。

0