【ハウツー】
SubSonicは1つのテーブルに対して3つのクラスを生成します。ここでは「テーブル名+Collection」「テーブル名+Controller」という名前のクラスについて紹介します。また、ストアドプロシージャの利用方法についても紹介します。
「テーブル名+Collection」という名前のクラスは、複数件のデータを操作するためのコレクション(System.ComponentModel.BindingList<T>の派生クラス)です。このクラスを利用することで、特定条件下のデータの値をまとめて変更したり、コードでデータで絞り込んだりできます。
//(1)出版社ID=1の書籍データを全て1000円値上げ
書籍Collection books = new 書籍Collection();
books.LoadAndCloseReader(書籍.Query().WHERE(書籍.Columns.出版社ID, 1).ExecuteReader());
foreach (書籍 book in books)
{
book.価格 += 1000;
}
//全て保存
books.SaveAll();
//(2)プログラムでデータをフィルタしてページに表示
//全ての書籍データを格納するコレクション
書籍Collection all = new 書籍Collection();
all.Load();
//表示用の書籍データを格納するコレクション
書籍Collection view = new 書籍Collection();
//日曜日に発売された書籍でフィルタ
foreach (書籍 book in all)
{
if (book.発売日.HasValue &&
book.発売日.Value.DayOfWeek == DayOfWeek.Sunday)
{
view.Add(book);
}
}
GridView1.DataSource = view.ToDataTable();
GridView1.DataBind();
(1)の例では、出版社ID=1の書籍データを全て1000円値上げしています。LoadAndCloseReaderメソッドを利用すると、コレクションにセットするデータをまとめて読み込むことができます。コレクション内のデータを操作した後で、SaveAllメソッドを呼び出すと、これらの変更を全てDBに保存できます。
(2)の例では、日曜日に発売された書籍でフィルタしてページに表示しています。テーブルの全データを読み出すには、Loadメソッドが使えます。ToDataTableメソッドを呼び出せば、コレクションのデータをDataTable形式に変換することもできます。
SubSonicでは、ObjectDataSourceコントロールと連携できるコントローラクラスも生成できます。このクラスは「テーブル名+Controller」という名前で生成されます。 このクラスを利用すると、簡単な画面操作だけでページを作ることができます。 例えば、ページにObjectDataSourceコントロールを張り付けて、タスクメニューから[データソースの構成]をクリックします。すると次のような画面が表示されます。
ここでビジネスオブジェクトとして表示されているのが、SubSonicが生成したコントローラクラスです。利用したいコントローラ(ここでは書籍Controller)を選択すると、データバインド系コントロール(GridView等)を使ってデータを表示/編集することができます。
ObjectDataSourceはコーディングレスでページの作成ができるので、初心者には使いやすいといえます。その反面、高度な制御をしたい時には、自由が利かないこともあります。そのような理由でコントローラクラスを生成する必要がない場合は、Web.configの設定でgenerateODSControllers属性をfalseに設定しておくと良いでしょう。
コードで組み立てるのが難しいクエリの場合は、無理せずストアドプロシージャを作成すると良いでしょう。例えば、次のようなストアドプロシージャをSQL Serverに作成したとします。
CREATE PROCEDURE 書籍情報取得
(
@価格 int = null
)
AS
BEGIN
SET NOCOUNT ON;
SELECT B.名前 AS 書籍名 ,B.価格, P.名前 AS 出版社名
FROM 書籍 AS B
LEFT OUTER JOIN 出版社 AS P ON B.出版社ID = P.ID
WHERE B.価格 = @価格
END
SubSonicでコードを再生成してから、「SPs」と入力すると「書籍情報取得」というメソッド名がインテリセンスに表示されます。引数の情報もインテリセンスに表示されるので、プログラムから簡単に使用することができます。このストアドプロシージャの実行結果はDataSet形式で取得できます。
SubSonicのWebサイトでも、複数のテーブルをJOINしたりGROUP BYするような複雑なSQLの場合は、ビューかストアドプロシージャを使うことを推奨しています。ビューとストアドプロシージャとの連携機能もSubSonicの特徴の一つですので、ぜひ活用してみてください。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第104回 今回のお題は…「be superior to」 [20:00 5/26] キャリア |
|
[木下優樹菜]妊娠7カ月でガールズアワード登場 [19:50 5/26] エンタメ |
|
「電撃20年祭」大サイン会、田中久仁彦や岸田メルら集結 [19:42 5/26] ホビー |
|
[AKB48・指原莉乃]総選挙速報4位に「キープしたい」 [19:05 5/26] ホビー |
|
[モーニング娘。]新体制でガールズアワード初登場 新曲初披露に先輩・矢口も絶賛 [18:48 5/26] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。