linq to entities简单查询给出"对象引用未设置为对象的实例"

时间:2014-03-16 18:35:24

标签: c# sql-server linq linq-to-entities

使用sql server 2012和visual studio 2012 c#.net 4.0

我有一个工作系统,运行每日报告电子邮件,今天出现了错误,当我调试它时,我发现了一些奇怪的东西。

我有这个简单的查询;

var rslt = (from p in db.someTable
            where (p.STATS_DATE != null && p.SOME_COL!= null && 
                   p.SOME_COL < enddate && p.SOME_COL> startdate && 
                   this.SOME_LIST.Contains(p.SOME_COL))
            select p);

抛出"Object reference not set to an instance of an object."

我尝试将查询简化为:

var d = (from p in db.someTable where (p.SOME_COL== 3) select p).ToList();

得到了同样的错误...... 我没有改变表格结构中的任何内容

我可以从sql server management studio查询表,它可以正常工作,

顺便说一下 - 它是一张大桌子

1 个答案:

答案 0 :(得分:0)

好的,所以我发现了问题,如果有其他人遇到它,这就是它的原因:

这个表没有包含pk列,所以我手动将实体映射上的一些列定义为键(逻辑上这很好,因为它们确实充当键),问题是其中一列被添加到了table为空值,并且键不能为null,因此导致空引用异常。

我试图设置&#34;允许空值&#34;对于实体映射尚未提示,因为我提示密钥不能为空,所以我不得不在数据库中更改表逻辑本身,因此它将使用pk(表不断重建自身因此有点困难。 ..)。

无论如何,在将pk添加到表并将其重新映射到实体模型后,问题就解决了。

希望它对任何人都有帮助。