Задайте UseDatabaseNullSemantics = true
;
-
Когато
UseDatabaseNullSemantics == true
,(operand1 == operand2)
ще се преведе като:WHERE operand1 = operand2
-
Когато
UseDatabaseNullSemantics == false
,(operand1 == operand2)
ще се преведе като:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Това е документирано от Microsoft:
Получава или задава стойност, указваща дали семантиката null на базата данни се показва при сравняване на два операнда, като и двата са потенциално нулеви. Стойността по подразбиране е false.
Можете да го зададете във вашия DbContext
конструктор на подклас, така:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Или можете също да зададете тази настройка на вашия dbContext
екземпляр отвън като примера с код по-долу, от моя гледна точка (виж коментара @GertArnold), този подход ще бъде по-добър, защото няма да промени поведението или конфигурацията на базата данни по подразбиране):
myDbContext.Configuration.UseDatabaseNullSemantics = true;