我们有一个基于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
列实际上在两个地方都为空,因此这可能不是问题。
任何帮助将不胜感激。
尝试将context.Configuration.UseDatabaseNullSemantics
设置为false
。这是影响上述行为的属性。
请参见文档here