C# 带null的字符串如何给出null以外的结果
这张照片几乎说明了一切。我有一个空字符串,无法使用它获取用户。但是,如果我输入null,它就会工作 我做了这个可行的变通办法,但我看不出应该如何需要它 我确实看到了一些关于nullable原语和EF 6(我正在使用EF6)的内容,但这是一个字符串 有人知道为什么吗C# 带null的字符串如何给出null以外的结果,c#,.net,linq,entity-framework,lambda,C#,.net,Linq,Entity Framework,Lambda,这张照片几乎说明了一切。我有一个空字符串,无法使用它获取用户。但是,如果我输入null,它就会工作 我做了这个可行的变通办法,但我看不出应该如何需要它 我确实看到了一些关于nullable原语和EF 6(我正在使用EF6)的内容,但这是一个字符串 有人知道为什么吗 更新 从这里可以看出,我使用UseCSharpNullComparisonBehavior=true 我现在已经在Azure和SQL Express上进行了尝试 奇怪的是,这在实时系统上工作,我们已经做了一些开发,但据我所知,没
更新 从这里可以看出,我使用
UseCSharpNullComparisonBehavior=true代码>
我现在已经在Azure和SQL Express上进行了尝试
奇怪的是,这在实时系统上工作,我们已经做了一些开发,但据我所知,没有任何东西会影响这一点
我还更新了nuget的最新EF
检查这个问题:
本质上,这是由于实体框架正在将lambda表达式转换为SQL。您输入的显式null
正在触发EF在SQL中进行is null
比较
编辑:
由于您使用的是EF 6,因此,如果您将上下文设置为允许使用空比较,则此功能看起来会起作用,例如:
objectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
是的,我早些时候发现了那个帖子,但因为它说它是在EF6中修复的,所以我不认为是它。另外,我已经在我的上下文中设置了UseCSharpNullComparisonBehavior。我再次检查UseCSharpNullComparisonBehavior是否设置为true。我和天蓝色赛跑。不知道这是否有什么不同。我现在已经在本地SQL express上试过了,同样的问题。奇怪的是,它可以在实时版本上运行(实时系统已经运行了100个工作小时),但上下文或类似内容没有任何变化。它也适用于另一个代码非常相似的系统。