我正在尝试使用 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 OR LocationId IS NULL。
编辑:在映射不正确的评论之后,我发现了问题。
映射是这样的
HasKey(x => new { x.EquipmentId, x.LocationId});
因为这一切都来自于一个观点。
似乎如果 LINQ 将某个属性视为键的一部分,它会假设它不可为空,如果该属性可空(int?)
映射是错误的。从 HasKey 映射中删除了 LocationId。
似乎如果 LINQ 将某个属性视为键的一部分,它会假设它不可为空,如果该属性可空(int?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)