連載
Enterprise Library概説

洗練されたデータアクセス機能を実装しよう

市川 龍太(patterns & practices Champion
2005/07/16
Page1 Page2 Page3 Page4

ConfigurationコンソールでData Access Application Blockの構成を設定する

 それではまずConfigurationコンソールを使った構成管理の手順について解説しよう。

●ConfigurationコンソールでのData Access Application Blockの追加

 Configurationコンソール上に新規「アプリケーション」ノード(以下の例では「Application1」)を作成し、それに対して「Data Access Application Block」ノードを追加してみよう。すると、これと同時に「Configuration Application Block」ノードも自動的に追加される。これは前回の「各Application BlockとConfigurationコンソールの依存関係」の図で示されているように、DAABがConfiguration Application Blockに依存しているためである。

ConfigurationコンソールでのData Access Application Blockの追加
Configurationコンソールを起動するには、[スタート]メニュー−[プログラム]−[Microsoft patterns & practices]−[Enterprise Library]−[Enterprise Library Configuration]をクリックすればよい。ここでは事前に、新規のアプリケーションを追加しておく必要がある。これを行うには、ツールバーの[New Application]をクリックするか、メニューバーから[File]−[New Application]を選択すればよい。これにより「Application1」ノードがTreeViewコントロールのルートにある[Enterprise Library Configuration]ノードの直下に作成されるはずだ。
  Data Access Application Blockを追加する。これを行うには、事前に追加しておいた「Application1」ノードの上で右クリックしてコンテキスト・メニューを表示し、そこから[New]−[Data Access Application Block]を選択すればよい。これにより「Data Access Application Block」ノードが「Application1」ノードの下に追加され、さらに「Data Access Application Block」ノードの子ノードとして、「Connection Strings」ノード、「Database Instances」ノード、「Database Types」ノードが追加される(詳細後述)。
  Data Access Application Blockと依存関係にある「Configuration Application Block」のノードが自動的に追加される。
  追加された各ノードのプロパティを設定して、Data Access Application Blockの挙動をカスタマイズする(詳細後述)。

 さらに、上の図を見ると分かるように、「Data Access Application Block」ノードの配下には次のような子ノードが自動的に追加される。

1.Connection Strings(接続文字列):
  →「データソースへ接続するための情報」を設定するノード
   

2.Database Instances(データベース・インスタンス):

  →「1のConnection Stringsと3のDatabase Typesの組み合わせ」を設定するノード
   

3.Database Types(データベース種別):

  →「接続先データソースに対応するデータプロバイダ用アセンブリの型情報」を設定するノード

 DAABを活用するには、これらの子ノードのプロパティ値に対して接続先データソースの情報を設定しなければならない。

 本稿では、その接続先データベースの例として、DAAB用のQuickStartサンプルで提供されている(SQL Server用の)「EntLibQuickStarts」データベースを使用する。従って、その設定作業を行う前に、EntLibQuickStartsデータベースをインストールしておこう。

●EntLibQuickStartsデータベースのインストール

 これを行うには、(デフォルトでは)[スタート]メニュー−[プログラム]−[Microsoft patterns & practices]−[Enterprise Library]−[Quickstart Applications]−[Data Access Application Block]−[Setup QuickStart Database]をクリックするだけだ。これにより、SQLスクリプトのバッチ・ファイルの「SetUpQuickStartsDB.bat」が実行されて、EntLibQuickStartsデータベースが自動的に作成される

 基本的にはこれだけで作業は完了なのだが、日本語環境ではこのインストールがうまくいかない場合があるので(現Enterprise Library 1.0〜1.1では基本的に失敗するはずだ)、実際には次のTipsを参照したうえでインストールを行ってほしい。

【Enterprise Library Tips】
SetUpQuickStartsDB.batでサンプル・データが登録されない場合の対処法

 現状ではSetUpQuickStartsDB.batを起動してもEntLibQuickStartsデータベースにサンプル・データが完全に登録されないという問題が発生することがある。

 この問題の解決方法については、「patterns & practices Enterprise Library(日本語情報サイト)」の「DataAccessQuickStarts.sqlの文字化けについて」で解説されている。

 EntLibQuickStartsデータベースの準備が終わったところで、このデータベースを接続先データソースとするための設定を、DAABに対して行っていこう。

●Data Access Application Block配下の各ノードにおけるプロパティ設定(Windows認証の場合)

 以下は、EntLibQuickStartsデータベースにWindows認証で接続する場合に必要な、各ノードにおける各プロパティに対する設定値を表にしたものである。

ノード プロパティ 設定値
Connection Strings Sql Connection String database Name Sql Server
Value EntLibQuickStarts
Integrated Security Name Integrated Security
Value True
server Name server
Value localhost
Database Instances Database Instance ConnectionStringNode Sql Connection String
DatabaseTypeNode Sql Server
Name Database Instance
Database Types Sql Server Name Sql Server
TypeName Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase, Microsoft.Practices.EnterpriseLibrary.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
DAAB配下の各ノードのプロパティに対する設定値の一覧
[Connection Strings]配下のノードに対して行うプロパティ設定は、「integrated security=SSPI; data source=localhost; initial catalog=EntLibQuickStarts」という接続文字列と同等の意味になる。

●SQL Server認証の場合の設定方法について

 今回のサンプルでは認証方式にWindows認証を用いているが、SQL Server認証についても当然ながらサポートしている。

 SQL Server認証で接続する場合は、「Connection Strings」−「Sql Connection String」ノードの配下に新しく「Parameter」ノードと「Password Parameter」ノードを追加する(これらのノードを追加するには、「Sql Connection String」ノードを右クリックすると表示されるコンテキスト・メニューから[New]−[Parameter]と[New]−[Password Parameter]をクリックすればよい)。そして、追加されたそれらのノードの各プロパティを以下の表のように設定することで接続できる。

ノード プロパティ 設定値
Connection Strings Sql Connection String Parameter Name user id
Value <ログイン・ユーザー名>
Password Parameter MaskedValue <接続パスワード>
Name password
SQL Server認証で接続するために新しく追加したノードに対するプロパティ設定値の一覧
[Connection Strings]配下のノードに対して行うプロパティ設定は、「data source=localhost; initial catalog=EntLibQuickStarts; user id=<ログイン・ユーザー名>; password=<接続パスワード>」という接続文字列と同等の意味になる。

 ConfigurationコンソールでのDAABの構成設定が終了し、最後に設定を保存しようとすると(メニューバーの[File]−[Save Application]を実行)、どこに保存するかを選択するための[Save Application : Application1]ダイアログが表示される。このダイアログの[ファイル名]の欄ではDAABを使用する「アプリケーション構成ファイルの名前」(Windowsアプリケーションの場合は「App.config」、ASP.NET Webアプリケーションの場合は「Web.config」)を指定する。これにより、Configurationコンソールで設定した内容が、指定した名前のアプリケーション構成ファイルにXML形式で出力される。

【Enterprise Library Tips】
Data Access Application Block用構成ファイルを自動で配置する方法

 Configurationコンソールから保存を行うと、「アプリケーション構成ファイル」に構成内容が出力される以外にも、「DAAB用の構成ファイル」(デフォルトでは、「dataconfiguration.config」という名前のファイル)も自動生成される。ただし、デフォルト設定のままだとこの構成ファイルは、アプリケーション構成ファイルと同じフォルダに生成されてしまう。つまり、アプリケーション構成ファイル(App.configなど)の出力先をプロジェクト用のフォルダに指定しておくと、DAAB用の構成ファイル(dataconfiguration.config)もプロジェクト・フォルダに生成されることになる。

 しかし、そもそもDAAB用の構成ファイル(この例では、dataconfiguration.config)に限らず、すべてのApplication Block用の構成ファイルは、「プログラム出力先のアプリケーション構成ファイル(<exe名>.exe.config)」と同じフォルダ(すなわち.exeファイルが出力される「bin」フォルダ)に存在しないと、それが読み取れずに実行時に例外が発生してしまう(なお、「プログラム出力先のアプリケーション構成ファイル」(<exe名>.exe.config)は、「Visual Studio .NETプロジェクト内のアプリケーション構成ファイル」(App.configなど)からビルド時などに自動生成される。この「プロジェクト内のアプリケーション構成ファイル」(App.configなど)は、Configurationコンソールで保存したファイルである)。

 DAAB用の構成ファイルの出力先(dataconfiguration.config)は、DAABと依存関係にあるConfiguration Application Blockのノードの下にある「dataConfiguration」−「XML File Storage Provider」ノードのFileNameプロパティの設定値によって決まるが、これを自動で配置するには、主に以下の2つの方法がある。

1. DAABを使用するVisual Studio .NETプロジェクトの[ビルド後のイベント コマンドライン]の欄に「copy "$(ProjectDir)*.config" "$(TargetDir)"」と指定する(C#の場合)

2. 「XML File Storage Provider」ノードのFile Nameプロパティにbinフォルダへのフルパス名を設定する

 これらの詳細については、patterns & practices Enterprise Library(日本語情報サイト)の「ApplicationBlock構成ファイルを自動で配置する方法」を参考にしてもらいたい。

 
なお[ビルド後のイベント コマンドライン]を設定するには、Visual Stuido .NETのソリューション・エクスプローラにあるプロジェクト上で右クリックして表示されるコンテキスト・メニューから[プロパティ]を選択して[<プロジェクト名> プロパティ ページ]ダイアログを開き、[共通プロパティ]−[ビルド イベント]を選択すればよい。ただし、これが行えるのはC#の場合のみで、Visual Basic .NETでは残念ながらできないようだ。

 以上で、DAABを使って実際にデータアクセス・ロジック・コンポーネントを実装する準備が整った。続いては、DAABを使った実装とDAAB使わない従来の実装を比較し、DAABを使うことのメリットについて解説していく。


 INDEX
  連載:Enterprise Library概説
  洗練されたデータアクセス機能を実装しよう
    1.Data Access Application Blockとは何か?
  2.ConfigurationコンソールでData Access Application Blockの構成を設定する
    3.Data Access Application Blockを使うメリット
    4.Data Access Application Blockをさらに使いやすくするツールたち
 
インデックス・ページヘ  「Enterprise Library概説」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間