gpt4 book ai didi

c# - Entity Framework Linq 等于值或为空

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:46 25 4
gpt4 key购买 nike

我正在尝试使用 linq 从 View 中获取项目列表,其中字段 LocationId 是一个值或为 null。字段 LocationId 是 int?。

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

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

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

与可能重复的问题不同的是,where only checking for a value is null。我想要的是 SELECT * FROM Items WHERE LocationId = @some_param OR LocationId IS NULL 行中的某处。

编辑:在映射不正确的评论之后我发现了问题。映射类似于

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

因为这一切都来自于一个观点。似乎如果 LINQ 将属性视为键的一部分,它将假定它是不可为 null 的,属性是否可为 null 无关紧要(int?)

最佳答案

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

似乎如果 LINQ 将属性视为键的一部分,它会假定它是不可为空的,如果该属性可为空(int?)则无关紧要

关于c# - Entity Framework Linq 等于值或为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com