EF Core 8,翻译过程中删除查询中的空检查

问题描述 投票:0回答:1
context.Table
       .Where(d => d.col1 == null || d.col1 == value1)
                && d.Active == true)
生成的

DbQuery 删除了

d.col1 == null
并仅使用
d.col1 = 'value1'

不确定 EF Core 8 是否遗漏了任何内容。

期望查询应该使用

d.col1 = null OR d.col1 = value1
entity-framework-core ef-core-8.0
1个回答
0
投票

放在这里,帮助别人。

问题不在于 EF Core 8,而在于我的模型。

早期房产:

public string Col1 {get; set;}

所以,当我运行查询时:

context.Table.Where(d => d.col1 == null || d.col1 == value1) && d.Active == true)

它生成:

t.col1 == 'values1'
.

这曾经在旧的 EF Core 3 中工作,但我认为它已经改变了,现在,我必须在我的模型中专门指定可为 null 的字段。我觉得这是一个值得欢迎的变化,尽管我被它咬伤了。

房产后:

public string? Col1 {get; set;}
有效。

数据库查询:

t.col1 == 'value1' OR t.col1 IS NULL

© www.soinside.com 2019 - 2024. All rights reserved.