我想让我的集成测试更具幂等性。一个想法是在每个测试后执行回滚,另一个想法是以某种编程方式解析文本,类似于 Query Analyzer 或 SSMS 中的绿色复选框。
如何在不使用 ADO.NET 运行命令的情况下让 SQL Server 解析我的命令?
更新:这是最终实现所需功能的解决方案:
using (DbCommand executeOnly = Factory.DbCommand())
{
executeOnly.Connection = command.Connection;
executeOnly.CommandType = CommandType.Text;
executeOnly.CommandText = "SET NOEXEC ON;" + sqlCommand;
executeOnly.Connection.Open();
executeOnly.ExecuteNonQuery();
}
//set more properties of command.
command.Execute();
由于无法解释的原因,“SET PARSEONLY ON
”只能在查询分析器中运行。我无法在ADO.NET连接上设置它。这也无所谓,因为PARSEONLY
似乎只会捕捉语法错误,这不是常见的错误。而SET NOEXEC ON
将会捕捉更广泛的错误类型,例如引用了缺失表或列的视图或存储过程中缺少参数。
executeOnly.CommandText = "SET NOEXEC ON; " + sqlCommand;
:3 - Liz