【ハウツー】

SubSonicを使ってASP.NETで簡単にDBアクセスする - 開発TIPS集

2 開発TIPS集2

    青木淳夫  [2008/10/08]

    新しいクエリクラス(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の利用も検討してみてはいかがでしょうか。

    関連記事

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン