0

我正在尝试创建一个Assert.AreEqual查询,该查询确定给定表中的记录实际上确实包含>= 1(行/记录)

我知道查询会在以下时间出现:

Assert.AreEqual(context.Count().Ticket_Number >= 1);

或者

Assert.AreEqual(context[row].Ticket_Number.Count() >= 1);

此查询返回 10,000 + 行:

SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage

这是我要确保有超过 1 条记录的查询(对于紧随其后的测试,它期望什么都没有返回)。

我不知道如何使用这些语句专门针对行,任何帮助表示赞赏。

4

4 回答 4

1

有这么多行,您应该使用 LINQ to SQL 过滤查询以仅返回 1 个结果以最大限度地提高性能。

Assert.IsTrue(sqlContext.TableName.FirstOrDefault(row => row.PrimaryKey != null) != null);

我们取具有非空 PK 的表的第一行,如果有结果,则测试将通过。

于 2013-11-12T16:22:48.273 回答
1

我认为你想要的是这样的东西来获得计数(然后将结果存储在一个变量中以使你的代码更清晰):

SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage

现在使用测试结果

Assert.IsTrue(resultFromSqlQuery >= 1);
于 2013-11-12T16:18:04.970 回答
1

如果您正在尝试测试比较,您可能想要使用Assert.IsTrue而不是,AreEqual因为您实际上并没有测试是否相等。假设您可以将记录计数放入一个名为 recordCount 的单独变量中:

Assert.IsTrue (recordCount >= 1);
于 2013-11-12T16:18:18.237 回答
0

一般来说,判断某事物是否存在多条记录的 SQL 方法是使用EXISTS关键字:

IF EXISTS(SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage)
   -- do something

或者,您可以使用COUNT来获取记录数:

SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage
于 2013-11-12T16:14:46.837 回答