【ハウツー】
前回は、ASP.NETアプリケーションから簡単にデータベースを操作できるオープンソース「SubSonic」の設定方法について紹介しました。本編では、SubSonicによって生成されたコードを使って効率的にプログラミングする方法について紹介していきます。
本稿では、以下のテーブルを利用してプログラムを紹介していきます。
このデータベースには、本の情報を格納する「書籍」テーブルと、その書籍を出版している「出版社」テーブルがあります。このテーブル間には、リレーション設定を行っています。
SubSonicを使って、このテーブルのコードを出力すると次のクラスが生成されます。
クラス名はテーブルと同じ名前で生成されます(ただし、テーブル名が「USERS」や「ORDERS」のように複数形の場合、生成されるクラス名は「User」や「Order」というように単数形の名前になります。
これらのクラスはActiveRecordクラスを継承します。この基本クラスの機能によって、データの操作が簡単に行えます。テーブルでなくビューの場合は、ReadOnlyRecordクラスを継承します。そのため、読み取り専用のクラスとなります。
クラスのプロパティ名は、テーブルのカラム名と同じ名前で定義されます。例えば、「名前カラム(nvarchar)→名前プロパティ(string型)」「価格カラム(int)→価格プロパティ(Nullableのint型)」のように定義されます。 また、このActiveRecordを継承するクラス以外にも2つのクラス(書籍Collection、書籍Controller)が生成されますが、これらについては後ほど紹介します。
それでは、この生成されたクラスを使ってコードを書いていきましょう。なお、以降のコードでは、Ss名前空間(環境構築時に指定した名前空間)とSubSonic名前空間をインポートしているとします。 まず、データの追加から見ていきましょう。
//書籍オブジェクトのインスタンス化
書籍 book = new 書籍();
//各列の既定値(デフォルト)を使用する場合のインスタンス化
//書籍 book = new 書籍(true);
//列の値を設定する
book.Id = 100;
book.名前 = "ActiveRecord入門";
book.価格 = 3000;
book.発売日 = DateTime.Parse("2008/09/01");
book.出版社ID = 1;
//保存する
book.Save();
//登録者名または登録者IDをCreatedBy列に設定する場合
//book.Save("aoki");
データを追加したい場合は、まず対象クラスのインスタンスを作成します。プロパティに値を設定した後で、Saveメソッドを呼び出すとINSERT文が実行されます。 Saveメソッドの引数には登録者IDまたは登録者名を設定することもできます。もし、保存対象テーブルに「CreatedBy」という名前のカラムがあれば、この引数の値がセットされます。 もし、キー列(IDカラム)が自動採番(SQL ServerのIDENTITY)の場合は、キー列に値をセットする必要はありません。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
シリーズ最終作『ゼロの使い魔F』のラストはどうなる!? [10:00 2/11] ホビー |
|
kizunaworld.org、LAのアーティスト・TOKiMONSTAによる楽曲を追加 [10:00 2/11] クリエイティブ |
|
萩尾望都がパリでマンガ教室、「11人いる!」の扉絵作り [09:45 2/11] ホビー |
|
[西部警察]大門のサングラスは照れ隠し? 制作担当者が語る舞台裏 [09:00 2/11] エンタメ |
|
9ストーリーズ ~バレンタインのエピソード~ [08:05 2/11] キャリア |