Ustaw UseDatabaseNullSemantics = true
;
-
Gdy
UseDatabaseNullSemantics == true
,(operand1 == operand2)
zostanie przetłumaczone jako:WHERE operand1 = operand2
-
Gdy
UseDatabaseNullSemantics == false
,(operand1 == operand2)
zostanie przetłumaczone jako:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Jest to udokumentowane przez Microsoft:
Pobiera lub ustawia wartość wskazującą, czy podczas porównywania dwóch operandów, z których oba potencjalnie dopuszczają wartość null, występuje semantyka bazy danych o wartości null. Domyślna wartość to false.
Możesz to ustawić w swoim DbContext
Konstruktor podklas, na przykład:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Możesz też ustawić to ustawienie na swój dbContext
instancja z zewnątrz jak przykład kodu poniżej, z mojego punktu widzenia (patrz komentarz @GertArnold), to podejście będzie lepsze, ponieważ nie zmieni domyślnego zachowania ani konfiguracji bazy danych):
myDbContext.Configuration.UseDatabaseNullSemantics = true;