6

目前我正在使用 Visual Studio 2012 RC 和 SQL Server 2012 RTM。

我想知道如何为每次测试运行重新部署/重新创建测试数据库。

请记住,我有一个使用 Visual Studio 2012 模板的数据库的 SQL Server 数据库项目。

实际上我不太确定我的想法,但是.testsettings文件有Setup 和 cleanup scripts。这是要走的路吗?例如,一个 PowerShell 脚本读取数据库项目生成的脚本并针对数据库执行它?

我想有更好的方法可以做到这一点,它应该是一个开箱即用的解决方案,但我忽略了它,谷歌并没有帮助我找到正确的解决方案。

4

3 回答 3

3

如前所述,您可能希望使用 VS 2012 .Local.testsettings > Setup and Cleanup 脚本来创建/拆除 SQL Server 数据库。

在此处输入图像描述

对于脚本,您可能希望将 powershell 与 .dacpac(而不仅仅是 T-SQL 脚本)一起使用,因为您使用的是 SSDT 项目。这是一些示例代码的链接- 特别是您可能想查看“Deploy-Dac”命令。

如果您不熟悉 .dacpacs 作为 SSDT 创建的数据库项目的(构建)输出,请查看此参考链接

于 2012-08-13T03:06:46.510 回答
3

编辑:虽然这不能以普通的 SQL Server 方式回答问题,但简单的实体框架方法如下:我发现我可以通过使用 DbContext.Database.CreateIfNotExists() 每次正确地创建和销毁我的数据库和我测试的设置和清理阶段中的 DbContext.Database.Delete() 方法。

于 2013-10-22T14:48:11.540 回答
2

最快的解决方案虽然有点小技巧,但非常简单。您可以将调试选项卡下的 DB Projects 属性设置为“始终重新创建 DB”。然后单击两次进行测试,进行调试/构建,然后运行所有测试。您应该在 localDB 上获得一个新构建的数据库,供您运行测试。您还可以将调试数据库的目标(同样是数据库项目属性)更改为您想要的任何内容,以便您可以部署到 .dacpac 或现有的 SQL 数据库或任何地方。这意味着分两步进行测试,如果你的构建很长,可能会很烦人,但它确实有效。否则,我相信脚本是您唯一的选择。

于 2012-08-15T17:12:27.667 回答