重新生成未重置我的SQL Server数据库

时间:2018-08-29 19:03:45

标签: c# sql-server integration-testing

我正在使用Respawn清理测试数据库,但是当该方法执行时:

public static Task ResetCheckpoint() => Checkpoint.Reset(ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString);

显示此错误消息:

  

消息:System.InvalidOperationException:无效的操作。连接已关闭。

我已经检查了ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString返回的值,它是正确的。

我通过Jimmy Bogardhttps://github.com/jbogard/ContosoUniversityDotNetCore-Pages(更具体地说,这两个类)在此示例项目中建立了集成测试结构:

1 个答案:

答案 0 :(得分:2)

我已经弄清楚了。问题是连接超时。我正在使用生产数据库中的克隆作为测试数据库,并且有很多表具有很多行,有些表具有数百万个寄存器。因此,我在SQL Server Management Studio中手动运行了由Respawn生成的命令,花了17分钟才将其全部清除。现在,我将能够使用干净的数据库编写和运行测试,而不会出现问题。

因此,这里学到的教训是:

  • 在运行Respawn Reset之前清除大型数据库,或将CommandTimeout类的Checkout属性设置为较高的值。

我认为Respawn可以返回有关Reset中出了什么问题的更好的消息,也许我会发送拉取请求来解决此问题。

相关问题