【发布时间】:2023-04-03 02:52:01
【问题描述】:
我有以下型号:
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; }
}
正如您在上面看到的,InputResourceID 和 PhaseID 是可为空的可选字段。
我想编写一个查询来查找给定日期和AttributeKey 的第一个条目,其中PhaseID 和InputResourceID 均为空。
我已经尝试了以下代码:
FactCache fact = db.FactCache.FirstOrDefault(
a => a.InputResourceID == null
&& a.PhaseID == null
&& a.MonthDate == monthDate
&& a.AttributeKey == key);
但是,它返回一个空对象。编写上述查询的正确方法是什么?
我检查了数据库,确实有 PhaseID 和 InputResourceID 为空的条目。
【问题讨论】:
-
看看this SO question,你用的是哪个版本的EF?
-
请原谅一个明显的问题:如果删除
MonthDate和AttributeKey检查,它仍然返回 null 吗? -
@SteveWilkes:是的,问题仍然存在
-
我在数据库中喜欢一些奇怪的东西(我首先使用代码):Appart 来自
InputResourceID列,code first 添加了第二个InputResources_ID列。它在配置上接缝约定不起作用(我将public virtual ICollection<FactCache> FactCache { get; set; }添加到InputResources模型中)不知道这是否有任何关系 -
@Andomar:我使用的是版本 4。您提供的链接使用的符号与我习惯的不同,这是否意味着上面的符号不能处理空值?
标签: c# linq entity-framework code-first