我可以将UseCSharpNullComparisonBehavior用于单个查询吗?

ada*_*101 4 c# sql-server entity-framework entity-framework-6

我有一个查询,曾经是一个存储过程,并转换为EF查询.现在是时候了.使用SQL事件探查器,我可以看到生成的SQL,唯一的区别是新的行为,其中EF转entity.Property == value(entity.Property = @value OR (@value IS NULL AND entity.Property IS NULL)).

我知道我可以通过设置关闭整个上下文UseCSharpNullComparisonBehavior = false,但我真的只想为这一个查询执行此操作.那可能吗?

或者,有没有办法编写EF查询,因此它不会像这样生成SQL?

Dav*_*idG 8

您可以将UseDatabaseNullSemantics上下文的属性设置为true.这基本上与旧ObjectContext.UseCSharpNullComparisonBehavior房产相反.

context.Configuration.UseDatabaseNullSemantics = true;
Run Code Online (Sandbox Code Playgroud)

  • 对于其他任何人这样做的提示,请确保您执行`.ToList()`或运行查询的内容_before_将其设置为false.我从我的函数返回`IEnumerable <>`所以查询没有运行,直到我开始迭代它,这是_after_我将属性设置回false.哎呀:/ (4认同)