当我尝试运行下面的实体框架查询:为什么匿名类型实例无法接受实体框架查询返回的空值?
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