Définissez UseDatabaseNullSemantics = true
;
-
Lorsque
UseDatabaseNullSemantics == true
,(operand1 == operand2)
sera traduit par :WHERE operand1 = operand2
-
Lorsque
UseDatabaseNullSemantics == false
,(operand1 == operand2)
sera traduit par :WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Ceci est documenté par Microsoft :
Obtient ou définit une valeur indiquant si la sémantique nulle de la base de données est affichée lors de la comparaison de deux opérandes, qui sont tous deux potentiellement nullables. La valeur par défaut est faux.
Vous pouvez le définir dans votre DbContext
constructeur de sous-classe, comme ceci :
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Ou vous pouvez également définir ce paramètre sur votre dbContext
instance de l'extérieur comme l'exemple de code ci-dessous, de mon point de vue (voir le commentaire de @GertArnold), cette approche sera meilleure, car elle ne changera pas le comportement ou la configuration de la base de données par défaut :
myDbContext.Configuration.UseDatabaseNullSemantics = true;