Indstil UseDatabaseNullSemantics = true
;
-
Når
UseDatabaseNullSemantics == true
,(operand1 == operand2)
vil blive oversat som:WHERE operand1 = operand2
-
Når
UseDatabaseNullSemantics == false
,(operand1 == operand2)
vil blive oversat som:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Dette er dokumenteret af Microsoft:
Henter eller indstiller en værdi, der angiver, om databasenul-semantik udvises, når to operander sammenlignes, som begge er potentielt nullbare. Standardværdien er falsk.
Du kan indstille det i din DbContext
underklassekonstruktør, som sådan:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Eller du kan også indstille denne indstilling til din dbContext
forekomst udefra som kodeeksemplet nedenfor, fra mit synspunkt (se @GertArnold-kommentaren), vil denne tilgang være bedre, fordi den ikke ændrer standarddatabasens adfærd eller konfiguration):
myDbContext.Configuration.UseDatabaseNullSemantics = true;