新しいクエリクラス(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形式でテーブルのデータを取得できます(英語名のテーブルのみ)。
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の利用も検討してみてはいかがでしょうか。