【遭遇問題】使用EF查不到資料的情況使用Sum

  • 1120
  • 0

最近遇到一個使用Entity Framework的問題,在查不到資料的情況下使用sum拋出了例外。

但撰寫測試程式時卻得到不同結果

最近遇到個奇怪問題
我使用entiy framework計算花費的加總
db.Log.Where(o => o.UserNo == UserNo).Sum(o => o.cost);
當Log這個Table沒有符合條件的資料時,會得到一個exception的錯誤訊息
「轉型為 'System.Int32' 型別失敗,因為具體化的值為 Null。此結果型別的泛型參數或此查詢,兩者中必須有一個使用可為 Null 的型別。」
為了測試這個問題,我撰寫了一個測試程式

 

此程式是產生一個dataList,所有資料的flag欄位都是true,
當使用where之後,將會查不到資料,原本預期是一樣產生exception,我再嘗試怎麼處理。
結果出乎預料的是竟然沒有發生exception。

我猜測原因大概是EF產生IQueryable的與List實作上的差異,但我也無法證實。

最後我的處理方式是where之後先看資料筆數,不為0再做sum。