2010-09-28 28 views
1

我有形式的查詢:表達始終是真實的(當它不是)

var fruits = (from p in fruitDB 
       where (p.Fruit.FruitID == fruitID && p.Color.ColorID != null) 
       select p.Color).Distinct(); 

VS 2010給我藍色的下劃線,並告訴我「表達始終是真實的」。現在,我同意如果數據庫中的數據沒有被塞滿,但在我的情況下,如果我不包含!= null

這個錯誤或基於規則集在我的數據庫架構? (儘管底層數據與它相矛盾)

+1

p.Color.ColorID是什麼類型?它是結構體,類還是值類型? – 2010-09-28 05:47:38

+0

什麼是fruitDB?集合,數據集表,數據庫表? 「ColorID」的類型和可空性規則是什麼? – 2010-09-28 05:48:34

+2

這聽起來像數據庫配置爲可空,但模型('ColorID')不是......? – 2010-09-28 06:12:17

回答

2

Color.ColorID是什麼類型?它是一個整數嗎?你應該檢查p.Color!= null嗎?

+0

這也是我的第一個想法。但後來我的第二個想法是,「你甚至可以將'int'值與'null'進行比較嗎?」 – Domenic 2010-09-28 05:48:35

+0

由於'int'的值類型永遠不會等於'int'類型的'null',因此您會得到一個符合「表達式結果總是'false'的行的編譯器錯誤。 – 2010-09-28 05:52:11

+0

編譯器警告,其實並不是錯誤 – Carson63000 2010-09-28 06:30:13

2

您能否包含實體圖?

如果Color是一個表,並且ColorID是其主鍵,則它不會爲空。也許你的第一個表中的外鍵是可空的,但這不是你在這裏測試的。

0

是否爲ColorID爲空?你應該檢查是否p.Color.ColorID == 0?

相關問題