6

現在、Visual Studio2012RCとSQLServer2012RTMを使用しています。

テストの実行ごとにテストデータベースを再デプロイ/再作成する方法を知りたいのですが。

VisualStudio2012のテンプレートを使用したデータベース用のSQLServerデータベースプロジェクトがあることに注意してください。

実際、頭に浮かんだアイデアについてはよくわかりませんが、.testsettingsファイルにはセットアップスクリプトとクリーンアップスクリプトが含まれています。これは行く方法ですか?たとえば、データベースプロジェクトで生成されたスクリプトを読み取り、データベースに対して実行するPowerShellスクリプトはありますか?

私はそれを行うためのより良い方法があると思います、そしてそれはすぐに使える解決策であるべきです、しかし私はそれを無視します、そしてグーグルは私が正しい解決策を見つけるのを助けません。

4

3 に答える 3

3

前述のように、VS 2012 .Local.testsettings > Setup および Cleanup スクリプトを使用して、SQL Server データベースを作成/破棄することをお勧めします。

ここに画像の説明を入力

スクリプトについては、SSDT プロジェクトを使用しているため、(単なる T-SQL スクリプトではなく) .dacpac で powershell を使用することをお勧めします。ここにいくつかのサンプル コードへのリンクがあります。特に、'Deploy-Dac' コマンドを確認することをお勧めします。

SSDT で作成されたデータベース プロジェクトの (ビルド) 出力としての .dacpacs に慣れていない場合は、この参照リンクを参照してください。

于 2012-08-13T03:06:46.510 に答える
3

編集:これは単純な SQL Server の方法で質問に答えませんが、簡単なエンティティ フレームワークのアプローチは次のようになります: DbContext.Database.CreateIfNotExists()テストのセットアップ フェーズとクリーンアップ フェーズの DbContext.Database.Delete() メソッド。

于 2013-10-22T14:48:11.540 に答える
2

最速の解決策は、ちょっとしたハックですが、本当に簡単です。[デバッグ]タブの[DBプロジェクト]プロパティを[常に再作成されたDB]に設定できます。次に、2回のクリックでテストし、デバッグ/ビルドを実行してから、すべてのテストを実行します。テストを実行するために、localDB上に新しく構築されたDBを取得する必要があります。デバッグDBのターゲット(ここでもDBプロジェクトのプロパティ)を必要に応じて変更できるため、.dacpac、既存のSQLDBなどにデプロイできます。これは2つのステップでテストすることを意味し、ビルドが長い場合は煩わしいかもしれませんが、機能します。それ以外の場合は、スクリプトが唯一の選択肢だと思います。

于 2012-08-15T17:12:27.667 に答える