如何使具有空值的字符串给出非空结果?

4
这张图片基本上把一切都说清楚了。我有一个空字符串,用它无法得到我的用户。然而如果我输入null就可以了。
我做了这个工作区域,它的效果很好,但我不明白为什么需要这样做。
我看到了一些关于可空基元和EF 6(我正在使用EF6)的东西,但这是一个字符串。
任何人有任何想法吗?
更新:
正如在这里可以看到的,我使用了UseCSharpNullComparisonBehavior = true; 现在我已经在Azure和SQL Express上都尝试过了。
奇怪的是这在运行中的系统上是有效的,我们进行了一些开发,但据我所知,没有对此产生影响。
我还更新了最新的nuget EF。
1个回答

6
请看这个问题: 如何在实体框架中查询null值? 实质上,这是由于Entity Framework正在将您的lambda表达式转换为SQL引起的。您输入的明确的null会触发EF在SQL中执行一个IS NULL比较。
编辑:
由于您使用的是EF 6,如果您设置上下文以允许使用null比较,则看起来这将起作用,例如:
objectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;

我之前找到过那篇帖子,但因为它说在EF6中已经修复了,所以我不认为那是问题所在。此外,我已经在我的上下文中设置了UseCSharpNullComparisonBehavior。 - Rickard Liljeberg
我仔细检查了 UseCSharpNullComparisonBehavior 是否设置为 true。我在 Azure 上运行。不知道这是否有任何影响。 - Rickard Liljeberg
我现在已经在本地 SQL Express 上尝试过了,问题依旧。奇怪的是,在实际版本上它可以正常工作(已经有 100 个工作小时从实际系统中流逝),但是上下文或类似的东西都没有改变。它也可以在另一个非常相似的系统上正常工作。 - Rickard Liljeberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接