实体框架Linq等于值或为null

本文关键字:null 于值 框架 Linq 实体 | 更新日期: 2023-09-27 18:00:12

我正在尝试使用linq从字段LocationId为值或为null的视图中获取项目列表。字段LocationId为int?。

我正在尝试的代码是这样的:

var items = _context.Items.Where(
    d => d.LocationId == null || d.LocationId == query.Location).ToList();

不幸的是,如SqlProfiler所示,生成的sql不包括d.LocationId==null。

与可能的重复问题不同的是,只有检查值为空。我想要的是SELECT*FROM Items行中的某个位置,其中LocationId=@some_param或LocationId为NULL。

编辑:在对映射不正确的评论之后,我发现了问题。地图有点像

HasKey(x => new { x.EquipmentId, x.LocationId});

因为这一切都来自一种观点。似乎如果LINQ将一个属性视为键的一部分,它会认为它是不可为null的,那么该属性是否可为null(int?)

实体框架Linq等于值或为null

也没关系

映射错误。已从HasKey映射中删除LocationId。

似乎如果LINQ将一个属性视为键的一部分,它会认为它是不可为null的,那么该属性是否可为null(int?)

也没关系