我的查询有些奇怪的问题。我有两个几乎完全相同的情况,其中一个查询正在运行,而另一个查询则给出错误。
var osobaIme = (from o in db.osobas
orderby o.osoba_ime
select o.osoba_ime).ToList().Distinct();
if (chkIme.Checked == true && Session["Ime"] != "1")
{
cbIme.DataSource = osobaIme;
cbIme.DataBind(); //Here is the error
Session["Ime"] = "1";
}
var osobaPrezime = (from o in db.osobas
orderby o.osoba_prezime
select o.osoba_prezime).ToList().Distinct();
if (chkPrezime.Checked == true && Session["Prezime"] != "1")
{
cbPrezime.DataSource = osobaPrezime;
cbPrezime.DataBind();
Session["Prezime"] = "1";
}
正如您所看到的两个查询几乎相同,唯一的区别是绑定数据的组合框和数据库中的字段。当我“激活”第一个查询(osobaIme)时,我收到以下错误:“对象引用未设置为对象的实例。”
第二个(osobaPrezime)工作正常。
我知道我收到的错误主要与空值有关,但在这种情况下它是不可能的,因为它应该显示正确的结果(大约500个)。
我很无能为力,任何帮助都会受到赞赏。
答案 0 :(得分:1)
使用完整堆栈反转错误消息来确定哪个组件生成错误
try
{ //;/;
// your errorneous code goes here
}
catch(Exception ex)
{
StringBuilder sb = new StringBuilder();
Exception innerEx = ex;
while(innerEx != null)
{
sb.AppendLine(innerEx.Message);
innerEx = innerEx.InnerException;
}
throw new Exception(sb.ToString());
}
答案 1 :(得分:0)
查询没有错。问题在于糟糕的填充数据库,它允许为重要字段输入空值(我真的不知道数据库设计者在设计时想到了什么,但这是另一个故事)。