尝试调试InvalidOperationException

时间:2011-08-23 12:27:33

标签: c# debugging

我的程序不断抛出InvalidOperationException,错误为“无法将null值赋给类型为System.Boolean且不可为空的值类型的成员”。我无法理解这一点,因为我的代码并没有尝试分配任何内容,只是遍历列表并生成所有声明数字的字符串(如果查询没有关联的声明,则返回空字符串):

public string ClaimNumbers
{
    get
    {
        if (Enquiry.Claims != null && Enquiry.Claims.Count>0)
        {
            var sb = new StringBuilder();
            foreach (var claim in Enquiry.Claims)
            {
                sb.Append(claim.ClaimId.ToString("00000") + ", ");
            }
            return sb.ToString().Substring(0, sb.Length - 2);
        }
        return string.Empty;
    }
}

奇怪的是,当我逐步调试调试器中的代码并尝试扩展Enquiry.Claims.Count时,我看到:

enter image description here

然后当我暂停一下并走到下一行时,它变为:

enter image description here

我正在使用Linq to Sql,而Claims是一个实体集,所以我想知道是否可能与从数据库中提取数据有关,但是我不确定,所以想不出什么是最好的解决问题的方法是。

2 个答案:

答案 0 :(得分:0)

我假设CLAIMS表有一列映射到Claims实体中的布尔属性,该列包含至少一个NULL值。

答案 1 :(得分:0)

这很可能是因为你使用LINQ to SQL或类似的东西,并且在那条确切的行上,结果集合为空,这将迫使LINQ引擎用{{初始化返回值1}}。 因此它会引发异常

要解决此问题,请尽可能查看将如何恢复集合的null,并使用Count符号声明nullable类型。

希望这有帮助。