我有一个查询,它曾经是一个存储过程,并被转换为EF查询。现在是时候了。使用SQL事件探查器,我可以看到生成的SQL的唯一区别是EF将entity.Property == value
转换为(entity.Property = @value OR (@value IS NULL AND entity.Property IS NULL))
的新行为。
我知道我可以通过设置UseCSharpNullComparisonBehavior = false
来关闭整个上下文,但我真的只想为这一个查询执行此操作。这可能吗?
或者,有没有办法编写EF查询,因此它不会像这样生成SQL?
答案 0 :(得分:8)
您可以将上下文的UseDatabaseNullSemantics
属性设置为true
。这基本上与旧的ObjectContext.UseCSharpNullComparisonBehavior
属性相反。
context.Configuration.UseDatabaseNullSemantics = true;