新しいクエリクラス(Select/Update/Insert/Deleteクラス)

最新バージョンの2.1から「Select/Update/Insert/Delete」というクラスが追加されています。これらの新しいクラスでは、よりSQLに近い形でコーディングすることができます。コードの例を簡単に紹介します。

新クエリクラスによるプログラム例

//1件のデータを取得(IDが5の書籍データ)
書籍 book =
    new Select()
    .From(書籍.Schema)
    .Where(書籍.IdColumn).IsEqualTo(5)
    .ExecuteSingle<書籍>();

//複数件のデータを取得(出版社IDが2以外の書籍データ)
書籍Collection books =
    new Select()
    .From(書籍.Schema)
    .Where(書籍.出版社IDColumn).IsNotEqualTo(2)
    .OrderAsc(書籍.Columns.価格)
    .ExecuteAsCollection<書籍Collection>();

//複数データの更新(出版社ID=5のデータの価格を2000円に)
int updCnt = 
    new Update(書籍.Schema)
    .Set(書籍.価格Column).EqualTo(2000)
    .Where(書籍.出版社IDColumn).IsEqualTo(5)
    .Execute();

//複数データの削除(500円以下の書籍を削除)
int delCnt =
    new Delete()
    .From(書籍.Schema)
    .Where(書籍.価格Column).IsLessThanOrEqualTo(500)
    .Execute();

これらの新しいクラスではJOIN関係のメソッドなど多くの機能が提供されています。そのため、ActiverRecordクラス、Queryクラスと共に、主要なクラスになっていくと予想されます。

ASP.NETのサーバコントロール

SubSonicはASP.NETのサーバコントロールも提供しています。

SubSonicで提供されているサーバコントロール

名前 機能
CalendarControl JavaScriptを使ったカレンダーコントロール
DropDown ドロップダウンリスト
LavaBlastManyManyList 多対多の関連リスト表示1
ManyManyList 多対多の関連リスト表示2
Scaffold 簡単なマスタメンテ機能
QuickTable 表示用テーブル
RadioButtons ラジオボタンのリスト

これらのコントロールのほとんどがプログラムレスでデータを表示することができます。

例えば、QuickTable/RadioButtons/DropDownといったコントロールでは、TableNameプロパティと幾つかのプロパティを設定するだけで、データを表示できます。また、ScaffoldコントロールはScaffoldType="Auto"と設定するだけで、全テーブルのマスタメンテを行うことができます。

もしツールボックスに、これらのコントロールが表示されていない場合は、ツールボックスの右クリックメニューから[アイテムの選択]を選択し、「SubSonic.dll」に参照設定すると良いでしょう。

REST機能

RESTHandlerクラスをHTTPハンドラとして利用すると、REST(Webサービス)としてデータを公開することができます。例えば、Web.configに次の設定を追加したとします。

REST用のWeb.configの設定例

<configuration>
   ~省略~
  </system.web>

  <location path="services">
    <system.web>
      <httpHandlers>
        <add verb="*" path="*.xml"
             type="SubSonic.WebUtility.RESTHandler, SubSonic" />
      </httpHandlers>
    </system.web>
  </location>

</configuration>

この状態で「http://<サーバ名>/services/<テーブル名>/List.xml」というURLにアクセスすると、XML形式でテーブルのデータを取得できます(英語名のテーブルのみ)。

RESTHandlerを使ってUserテーブルのデータを取得

URLにパラメータをつけると、取得データを変更することができます。例えば、List.xmlのうしろに「?age=18」と追加するとage列が18歳のデータ、
「?minz_age=18」と追加すると18歳以上のデータというようなイメージでクエリを実行できます。

まとめ

以上、駆け足でしたが、SubSonicの機能について3回にわたって紹介してきました。 データベースにアクセスするにはADO.NET、LINQ to SQL、DataSet、S2Dao.NET、NHibernateなど様々な方法がありますが、SubSonicには、多くのコードを自動生成して手軽に利用できるという特徴があります。そのため、変化の速いWebアプリケーションを手早く構築するのに適しているツールともいえます。今後、ASP.NETでアプリケーションを開発する際には、SubSonicの利用も検討してみてはいかがでしょうか。