コマンドラインツールでコードを生成

ここまでビルド時にコードを自動生成する方法を紹介してきましたが、生成されたコードを見たいという人や、バージョン管理ソフトを使用したいという人も多いと思います。また、ASP.NETサーバの信頼レベル(Trust Level)が制限されているとうまく動作しないという問題もあります。 そこで、ここからは、コマンドラインツールを使って、明示的にコードを生成する方法について紹介していきます。

ソリューションの構成

ここではソリューションに新しいプロジェクトを追加します。 WebサイトのApp_Codeフォルダにコードを生成することも可能ですが、データアクセス用のコードを別プロジェクト(別アセンブリ)に分離しておいたほうが、FTPアップロード/テスト/機能拡張の面で都合が良いことも多いので、ここでは新しいクラスライブラリプロジェクトを作成することにします。

新しいプロジェクトの作成

まず、ファイルメニューの[追加]-[新しいプロジェクト]をクリックします。テンプレートで、C#またはVBの[クラスライブラリ]を選択します。 参照設定フォルダを右クリックして、[参照の追加]をクリックします。開いたダイアログで「System.Web」と「System.Configuration」を選択します。また、Webサイトの時と同様にSubSonic.dllにも参照を追加します。 そして、Class1.csを削除して、genというフォルダを作成しておきます。

App.configの設定

続けて、App.configファイルを追加します。プロジェクト直下で右クリックして、[追加]-[新しい項目]を選択します。[アプリケーション構成ファイル]を選択します。 App.configに記述する内容は、Web.configと同じです。Web.configから「(1) 構成セクション (2)DB接続文字列 (3)SubSonic」の設定をコピーして張り付けてください。なお、Web.config側の記述は、Webサイトの実行時に使用されるので、削除しないで残しておいてください。

クラスライブラリプロジェクトの構成とApp.configの設定

外部ツールの登録

コードを生成するツールを呼び出すために、外部ツールの設定を行います。[ツール]メニューの[外部ツール]をクリックしてください。外部ツールウィンドウが表示されるので、[追加]ボタンを押してください。

外部ツールウィンドウの設定(SubSonicを呼び出す設定)

タイトルに任意の名前(ここではSubSonic2.1)を入力し、コマンドの部分で「C:\Program Files\SubSonic\SubSonic 2.1 Final\SubCommander\sonic.exe」を選択します。 引数には「generate /out gen /lang cs」と入力します。このgenerate命令によって、データアクセスコードを生成できます。/outパラメータは出力先のフォルダを、/langパラメータは出力言語(csかvb)を指定します。 初期ディレクトリは右の三角からプロジェクトディレクトリを選んで$(ProjectDir)と設定します。

そして[出力ウィンドウを使用]と[起動時に引数を入力]にチェックを入れてからOKをクリックします。

外部ツールからsonic.exeの実行

それでは、コードを生成してみましょう。[ツール]メニューの[SubSonic2.1(登録した名前)]をクリックしてください。

外部ツールの実行(sonic.exeの実行)

OKボタンを押すと、出力ウィンドウにコードの生成状況が表示されます。最後に実行時間が表示されて処理が完了します。 ソリューションエクスプローラの[すべてのファイルを表示]アイコンが選択されていることを確認してから、[最新の情報に更新]アイコンをクリックしてください。うまく実行されていると、genフォルダに生成されたファイルが表示されるはずです。

SubSonicの出力ログと生成されたクラス

次にこれらのファイルを全て選択して、右クリックメニューから[プロジェクトに含める]を選択してください。これで、生成されたファイルをビルドすることができます。ビルドしてエラーがなければ成功です。

今後、テーブルのレイアウトを変更した場合は、外部ツールを呼び出す一連の手順を繰り返して、コードを再生成してください。

Webアプリケーションからクラスライブラリを呼び出す設定

最後に、Webアプリケーションから、このプロジェクトを参照する設定をします。

WebサイトのBinフォルダを右クリックして[参照の追加]を選んで、プロジェクトタブから、このプロジェクトを選択してください。これによって、データアクセスコードを利用できます。

また、App_Codeの中の「SubSonic.abp」ファイルを忘れずに削除しておいてください。Web.configの<buildProviders>~</buildProviders>の部分もコメントアウトか削除しておくと良いでしょう。