連載:VS 2005でいってみようDBプログラミング第7回 データソース・コントロールでいってみよう(後編)山田 祥寛(http://www.wings.msn.to/)2006/08/26 |
|
|
■データアクセス・コンポーネントを拡張する
以上、TableAdapter構成ウィザードを使って、ウィザード・ベースでデータアクセス・コンポーネントを作成する方法について見てきました。これによって、コーディングレスでデータアクセス部分を実装できますが、これだけではSqlDataSourceコントロールでできることとさほど変わりはありません。
データアクセス・コンポーネントの特長は、定型的な処理はウィザード・ベースで手軽に実装できると同時に、ウィザード・ベースでは賄えないイレギュラーな要件を手軽に拡張できる、という点にあります。
以下では、前項で作成したデータアクセス・コンポーネントに対して、自前のデータアクセス・コードを追加してみることにしましょう。
[1]拡張コードを作成する
自動生成されたデータアクセス・コンポーネント(正確にはテーブル・アダプタ)の機能を拡張するには、部分クラス(Partial Class:パーシャル・クラス)を利用します。
部分クラスとは.NET Framework 2.0から追加された機能の1つで、1つのクラスの定義を複数に分割できる機能のことをいいます。部分クラスを利用することで1つのクラスを複数のファイルに分割して記述し、コンパイル時に1つのクラスとしてマージすることが可能になります(詳細は、拙稿「VS 2005で新しくなったVisual BasicとC#の新機能を総括」を参照)。
部分クラスによる拡張コードを作成するには、ソリューション・エクスプローラから「App_Code」フォルダを右クリックし、表示されたコンテキスト・メニューから[新しい項目の追加]を選択してください。
[新しい項目の追加]ダイアログが表示されますので、表2の要領で入力したうえで、[追加]ボタンをクリックします。
|
||||||||
表2 [新しい項目の追加]ダイアログの入力項目 | ||||||||
コード・エディタが開きますので、リスト1のようにコードを入力してみましょう。なお、このGetBooksDataSetメソッドの中身は、前回のリスト1(Book.vb)のgetBooksDataReaderメソッドの中身とまったく同じです。
|
|
リスト1 型指定データセットを拡張するためのコード(BooksDataSet.vb) |
自動生成されたテーブル・アダプタは「<.xsdファイル名>TableAdapters」名前空間に属しています。また、TableAdapterクラスの名前は、デフォルトで「<テーブル名>TableAdapter」です。
部分クラスを定義するには、(当然のことではありますが)元のクラスと同じ名前空間/クラス名で記述する必要があります。部分クラスであることは、Partialキーワードで宣言することが可能です。
これで、データアクセス・コンポーネントに自作のGetBooksDataSetメソッドが追加されました。
[2]「.aspx」ファイルを修正する
拡張されたデータアクセス・コンポーネントが正しく動作しているかどうかを確認してみましょう。前回作成したObjectDataSource.aspxを開き、GridViewコントロールのタスク・メニューから[データソースの構成]を選択してください。
データ構成ウィザードが開きますので、以下の図7のように、ビジネス・オブジェクトとして「BooksDataSetTableAdapters.booksTableAdapter」を、SELECTメソッドとして「GetBooksDataSet(String publish)、戻り値 DataSet」を選択してください。
図7 データソース構成ウィザードのビジネス・オブジェクト選択 |
ビジネス・オブジェクトとして「BooksDataSetTableAdapters.booksTableAdapter」を、SELECTメソッドとして「GetBooksDataSet(String publish)、戻り値 DataSet」を選択する。 |
前回同様、プルダウン・メニューの選択に応じてbooksテーブルの内容が選択表示されれば成功です。最終的な完成コードは、サンプル・プログラム内のTypedDataSetEx.aspxに含まれていますので、適宜参考にしてください。
いかがですか? このように、Visual Studio 2005のデータアクセス・コンポーネントの自動生成機能を利用することで、ウィザード・ベースの高い開発生産性と、部分クラスによる高度な柔軟性を実現できるというわけです。
[コラム]自動生成されたデータアクセス・コンポーネントをコードから利用する もちろん、DataAdapter構成ウィザードによって自動生成されたデータアクセス・コンポーネントは、コード中からも利用することが可能です。例えば、以下はbooksテーブルの1行目からisbnフィールドの値を取り出すためのコードです。
ちなみに、データ取り出しの部分では、以下のようなコードを記述することも可能です。
しかし、この場合、テーブル/フィールド名を単なる文字列として指定しているため、「コーディング時にIntelliSense機能を利用できない」「指定された名前に誤りがあってもコンパイラが検出できない」などの問題があります。特別な理由がない限り、前者のような記法で記述することを強くお勧めします。 |
INDEX | ||
Visual Studio 2005でいってみようDBプログラミング | ||
第7回 データソース・コントロールでいってみよう(後編) | ||
1.Visual Studioでデータアクセス・コンポーネントを自動生成(1) | ||
2.Visual Studioでデータアクセス・コンポーネントを自動生成(2) | ||
3.Microsoft Accessに特化したAccessDataSourceコントロール | ||
4.XMLデータを操作するXmlDataSourceコントロール | ||
「Visual Studio 2005でいってみようDBプログラミング」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|