當我嘗試運行下面的實體框架查詢:爲什麼匿名類型實例無法接受實體框架查詢返回的空值?
var l = (from s in db.Samples
let action = db.Actions.Where(x => s.SampleID == x.SampleID && x.ActionTypeID == 1).FirstOrDefault()
where s.SampleID == sampleID
select new
{
SampleID = s.SampleID,
SampleDate = action.ActionDate,
}).ToList();
我得到以下異常:
演員陣容價值型「日期時間」失敗,因爲物化 值爲null。 結果類型的通用參數或查詢 必須使用可爲空的類型。
的問題可能是,Action.ActionDate
定義爲EF模型非可空DateTime
,但查詢返回null
時有分配給Sample
沒有相關的動作。
解決方法是返回一個具有可空屬性的非匿名類型,但爲什麼匿名類型不能接受空結果?匿名類型可以以某種方式強制使用可爲空的屬性創建嗎?
沒有通用類型。這裏有匿名類型。匿名類型在編譯時「定義」 – xanatos 2015-04-01 19:24:41
你可以嘗試'SampleDate =(DateTime?)action.ActionDate' – Grundy 2015-04-01 19:28:46
Action.ActionDate被定義爲EF模型**中不可爲空的DateTime,**是你的問題。如果數據庫列可以爲空,那麼它在模型中不應該是不可空的。 – Servy 2015-04-01 19:31:27