show c#代码中的图片我很困惑

时间:2013-12-04 16:57:02

标签: c# linq visual-studio-2012 linq-to-sql integration

下图显示了我目前正在进行的集成测试。

1。http://i44.tinypic.com/n1atk4.png

让我感到困惑的是:

Assert.AreEqual(0/*57*/, auditRecord.Table_Final_Row_Count);

/* 57 */是应该实际存在的值(刚刚注释掉)。

下图是数据库中的结果:

2。http://i39.tinypic.com/117foyx.png


更多信息: 我正在将数百行代码转换为linq2sql。未转换的代码具有/ 57 /作为结果应该是正确的。当我尝试添加57时,它给出了一个错误,说明预期(57)实际(0)。现在我知道0不正确..这可能是我的代码。我该如何解决这个问题?

P.S。零成功通过......

1 个答案:

答案 0 :(得分:2)

你的测试很脆弱。您将从数据库返回第一个元素,而不返回谓词或订单子句。当您使用SELECT TOP(1)时,无法保证SQL Server将返回相同的行。可能之前的测试运行返回该列的值为57。您应该更改FirstOrDefault()调用。

var auditRecord = auditRecords.FirstOrDefault(row => row.Id == someId);

或者:

var auditRecord = auditRecords..OrderBy(row => row.SomeColumn).FirstOrDefault();