使用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并将其重新映射到实体模型后,问题就解决了。希望对大家有所帮助。