簡體   English   中英

LINQ到實體的簡單查詢給出“對象引用未設置為對象的實例”

[英]linq to entities simple query gives “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 management studio中查詢表,並且可以正常工作,

順便說一句-它是一張大桌子

好的,所以我找到了問題所在,如果有人遇到它,這就是問題所在:

該表不包含pk列,因此我在實體映射上手動定義了一些列作為鍵(從邏輯上講,這是很好的,因為它們實際上是作為鍵),問題是這些列之一被添加為null值,並且鍵不能為null,因此會導致null引用異常。

我嘗試在實體映射上將“ allow nulls”設置為true,但提示我密鑰不能為空,因此我不得不更改數據庫中的表邏輯本身,以便使用pk(表在不斷重建因此,這有點困難...)。

無論如何,在將pk添加到表中並將其重新映射到實體模型之后,問題就解決了。

希望對大家有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM