0

独自のデータベース スキーマを適用するためのコードを含む ASP.NET Web アプリケーションがあります。このコードは、アプリケーションの開始時に実行されます。

最近、LINQ to SQL の使用を開始しました。データベースで SqlMetal を実行するビルド前イベントを追加して、db テーブルを表すオブジェクトを取得しました。

ビルド前のイベントでデータベース スキーマを適用してから、SqlMetal を実行できれば、本当に素晴らしいことです。そのままでは、スキーマが変更された場合 (たとえば、テーブルにフィールドを追加した場合)、(a) Web サイトをビルドして実行し、アプリケーションが起動してスキーマが適用されるようにし、(b) 再度ビルドする必要があります。 SqlMetal が実行されるようにします。

では、Web アプリケーションにあるコードをコマンド ラインから実行するためのオプションは何ですか?

4

2 に答える 2

1

これが私たちの仕事です。

チェックイン前に実行する必要があるローカル ワンクリック ビルドがあります (統合ビルドも、チェックインごとに別の環境で実行されます...)。

NANT スクリプトは次のことを行います。

  1. Tarantino (データベース変更管理) を使用してデータベースをゼロから再構築する
    • クリーン&コンパイル
    • DLL を別のディレクトリにコピーする
    • DLL に対して単体テストを実行する

SQL Metal 用の別のスクリプトがありますが、あなたの質問により、ステップ 1 と 2 の間に呼び出しを挿入する方法を検討する必要があります。このようにして、データベースが変更され、linq によって生成されたファイルが常に同期されます。

于 2009-02-23T04:31:34.543 に答える
0

CodeDOM を使用してリポジトリ内のファイルを解釈する小さなプログラムを作成するか、ビルド前イベント内でコンパイラの実行可能ファイルを直接呼び出すことができます。

CodeDOM を使用すると、コンパイラの実行可能ファイルがどこにあるかを知る必要があるという問題を回避できますが、依存関係なしにコードを 1 つのファイルに含めることができない場合、そのファイルは使用できず、コンパイラを呼び出すことになるため、結果を実行することをお勧めします。

于 2009-02-23T04:38:07.727 に答える