LINQ2Entity Framework查询表现奇怪

时间:2011-02-20 02:45:05

标签: c# asp.net linq-to-entities

我的查询有些奇怪的问题。我有两个几乎完全相同的情况,其中一个查询正在运行,而另一个查询则给出错误。

           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个)。

我很无能为力,任何帮助都会受到赞赏。

2 个答案:

答案 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)

查询没有错。问题在于糟糕的填充数据库,它允许为重要字段输入空值(我真的不知道数据库设计者在设计时想到了什么,但这是另一个故事)。