Set UseDatabaseNullSemantics = true
;
-
When
UseDatabaseNullSemantics == true
,(operand1 == operand2)
will be translated as:WHERE operand1 = operand2
-
When
UseDatabaseNullSemantics == false
,(operand1 == operand2)
will be translated as:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
This is documented by Microsoft:
Gets or sets a value indicating whether database null semantics are exhibited when comparing two operands, both of which are potentially nullable. The default value is false.
You can set it in your DbContext
subclass constructor, like so:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Or you can also set this setting to your dbContext
instance from the outside like the code example below, from my point of view (see @GertArnold comment), this apporach will be better, because it will not change the default database behaviour or configuration):
myDbContext.Configuration.UseDatabaseNullSemantics = true;