LINQ to 实体简单查询提供"object reference not set to an instance of an object"



使用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管理工作室查询表,它工作,

btw -这是一个大表

好的,所以我发现了问题,这是它是什么,如果别人遇到它:

这个表不包含pk列,所以我手动在实体映射上定义了一些列作为键(逻辑上这是好的,因为它们实际上是作为键),问题是这些列中的一个被添加到表中作为空值,键不能为空,所以它会导致空引用异常。

我试图在实体映射上设置"允许null"为真,但我被提示一个键不能为空,所以我不得不改变数据库中的表逻辑本身,这样它就会使用pk(表不断地重建自己,因此有点困难……)。

在向表中添加了一个pk并将其重新映射到实体模型后,问题就解决了。

希望对大家有所帮助。

相关内容

最新更新