实体框架:搜索具有空列的数据库条目

时间:2013-05-15 15:02:32

标签: c# linq entity-framework code-first

我有以下型号:

public class FactCache
{
    public int ID { get; set; }
    public DateTime MonthDate { get; set; }
    public string AttributeKey { get; set; }

    public decimal RawValue { get; set; }
    public decimal ManDayValue { get; set; }
    public decimal FTEValue { get; set; }

    public int? InputResourceID { get; set; }
    public int? PhaseID { get; set; }

    public virtual InputResources InputResource { get; set; }
    public virtual DimPhase Phase { get; set; }
}

如您所见,InputResourceIDPhaseID是可以为空的可选字段。

我想编写一个查询来查找给定日期的第一个条目,AttributeKey PhaseIDInputResourceID都为空。

我尝试过以下代码:

FactCache fact = db.FactCache.FirstOrDefault(
  a => a.InputResourceID == null
  && a.PhaseID == null
  && a.MonthDate == monthDate
  && a.AttributeKey == key);

但是,它返回一个null对象。编写上述查询的正确方法是什么?

我检查了数据库,确实有空PhaseIDInputResourceID的条目。

2 个答案:

答案 0 :(得分:1)

不确定,但也许......

FactCache fact = db.FactCache.FirstOrDefault(
  a => false == a.InputResourceID.HasValue
  && false == a.PhaseID.HasValue
  && a.MonthDate == monthDate
  && a.AttributeKey == key);

答案 1 :(得分:1)

请注意,我很幸运能够运行EF 5或更高版本,试试这里提出的解决方案:Call is failing with null parameter