为什么EF6 LINQ无法为空字符串变量比较生成正确的“是否为空” SQL?

问题描述 投票:0回答:1

我们有一个基于EDMX的EF6应用程序,我们想在其中运行这样的LINQ查询。

string category = ... // comes from somewhere and equals to null
context.Product.Where(e => e.Category == category).ToArray();

我看到的问题是,无论变量[table].[Category] = @p...是否为category,生成的SQL在where子句中都包含null。因此,在一天结束时,如果变量为null,查询将不返回任何结果,而不是生成适当的is null条件并返回适当的行。

我已经测试了显式e => e.Category == null表达式,并且确实按预期方式生成了is null

我还检查了EDMX和SQL,并且相应的Category列实际上在两个地方都为空,因此这可能不是问题。

任何帮助将不胜感激。

c# entity-framework-6 linq-to-entities
1个回答
1
投票

尝试将context.Configuration.UseDatabaseNullSemantics设置为false。这是影响上述行为的属性。

请参见文档here

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