Ställ in UseDatabaseNullSemantics = true
;
-
När
UseDatabaseNullSemantics == true
,(operand1 == operand2)
kommer att översättas som:WHERE operand1 = operand2
-
När
UseDatabaseNullSemantics == false
,(operand1 == operand2)
kommer att översättas som:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Detta är dokumenterat av Microsoft:
Hämtar eller ställer in ett värde som indikerar om databas noll-semantik visas när två operander jämförs, som båda är potentiellt nollbara. Standardvärdet är falskt.
Du kan ställa in den i din DbContext
underklasskonstruktor, som så:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Eller så kan du också ställa in den här inställningen till din dbContext
instans från utsidan som kodexemplet nedan, ur min synvinkel (se @GertArnold-kommentaren), kommer detta tillvägagångssätt att vara bättre, eftersom det inte kommer att ändra standarddatabasbeteendet eller -konfigurationen):
myDbContext.Configuration.UseDatabaseNullSemantics = true;