Setzen Sie UseDatabaseNullSemantics = true
;
-
Wenn
UseDatabaseNullSemantics == true
,(operand1 == operand2)
wird übersetzt als:WHERE operand1 = operand2
-
Wenn
UseDatabaseNullSemantics == false
,(operand1 == operand2)
wird übersetzt als:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Dies ist von Microsoft dokumentiert:
Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob beim Vergleich zweier Operanden, die beide potenziell nullfähig sind, Datenbank-Nullsemantik gezeigt wird. Der Standardwert ist falsch.
Sie können es in Ihrem DbContext
festlegen Unterklassenkonstruktor, etwa so:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Oder Sie können diese Einstellung auch auf Ihren dbContext
setzen Instanz von außen wie im folgenden Codebeispiel, aus meiner Sicht (siehe @GertArnold-Kommentar) ist dieser Ansatz besser, da er das Standardverhalten oder die Konfiguration der Datenbank nicht ändert):
myDbContext.Configuration.UseDatabaseNullSemantics = true;