はじめに

ASP.NETでWebアプリケーションを開発していると、データベースを利用するプログラムの作成に思ったよりも時間がかかってしまうことがあります。そこで、本稿では、ASP.NETアプリケーションから簡単にデータベースを操作できるSubSonicというオープンソースライブラリについて紹介します。

このSubSonicは、テーブル、ビュー、ストアドプロシージャのレイアウトを読み取って、自動的にデータアクセス用のクラスを生成してくれます。このクラスはActiveRecordと呼ばれるデータアクセスパターンを採用しているため、比較的、理解しやすく直観的にデータを操作することができます。

構成について

前編にあたる本編では、SubSonicの環境設定方法について紹介します。後編ではSubSonicを活用したプログラミング方法について紹介します。

SubSonicの特徴

SubSonicを使用すると、データベースにアクセスするクラスを自動生成できます。そのためSQLを書かなくても簡単にデータを扱うことができます。

1件のデータを読み出して上書き保存するコード例(インテリセンスでテーブルの列名が表示される)

SubSonicは、Rubyで構築された「RubyOnRails」というフレームワークの影響を受けています。そのため、RubyOnRailsのActiveRecordと似た便利な機能がSubSonicにも取り入れられています。その上、DataSet形式のサポートやObjectDataSource用クラスの生成といった.NET環境に適した機能も充実しています。また、コードでクエリを指定して簡単に複数のデータを取得する機能も用意されています。

WHERE条件を指定して複数件のデータを取得するコード例

SubSonicの動作環境ついて

SubSonicを動作させるには、.NET Frameworkのバージョン2.0以上が必要です。本稿では、Visual Studio 2008(C#)を利用して解説を行っていますが、無償版であるVisual Web DeveloperとVisual C# 2008 Express Editionを組み合わせても、SubSonicを使用することができます。 SubSonicは、C#とVBの両方のコードを生成できるため、これらの言語で得意な方を選択して開発を行うことができます。

SubSonicにおけるテーブル設計について

SubSonicを使用するためには、各テーブルに1つの主キー列を設定する必要があります。主キー列の型としては、数値型(int)、文字列型(nvarchar)、日付型(datetime)、Guid型(uniqueidentifier)等を使用できます。主キー列の名前は慣例的にIDという名前の列を使いますが、特に違う名前でも問題ありません。

SubSonicの入手方法

SubSonicはオープンソースとして開発が進められています。メインサイトでは、ドキュメント(英語)やビデオキャストなどが公開されています。ダウンロードファイルはCodePlexで配布されています。ダウンロードファイルは「全て(ソースコード、バイナリ、ドキュメント)」「ソースコード」「ドキュメント」などの種類がありますが、ここでは、全てが含まれている最新バージョン「Setup-SubSonic-2.1-Final.exe」をダウンロードします。

SubSonicのインストール

「Setup-SubSonic-2.1-Final.exe」をダブルクリックしてインストーラを起動してみましょう。

SubSonicのインストール画面

インストールを行うと、アセンブリやソースコードがフォルダが展開(既定では、C:\Program Files\SubSonic)され、スタートメニューにプログラムが登録されます。もし、インストーラを使いたくない場合は、ソースコード(C#)をダウンロードして、適宜ビルドしてください。

展開されたフォルダの内容

インストーラを使った場合、次のようなフォルダが展開されます。

SubSonicを構成するフォルダ

フォルダ/ファイル名 説明
src 各ツールとライブラリのソースコード群
SubCommander コードを生成するツール(sonic.exe)
SubSonic 参照するアセンブリ(SQL Server以外の場合)
SubSonic (Sql Server Only) 参照するアセンブリ(SubSonic.dll)
SubStage GUIツール
Documentation.chm クラスのAPIドキュメント

多くのファイルがありますが、重要なファイルは、コードを生成するコマンドラインツール「sonic.exe」と、コードから参照して使用する「SubSonic.dll」です。これらは後ほど使用していきます。