Defina
UseDatabaseNullSemantics = true
; -
QuandoUseDatabaseNullSemantics == true
,(operand1 == operand2)
será traduzido como:
WHERE operand1 = operand2
-
QuandoUseDatabaseNullSemantics == false
,(operand1 == operand2)
será traduzido como:
WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Isso é documentado pela Microsoft:
Obtém ou define um valor que indica se a semântica nula do banco de dados é exibida ao comparar dois operandos, ambos potencialmente anuláveis. O valor padrão é falso.
Você pode configurá-lo em seu
DbContext
construtor de subclasse, assim:public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Ou você também pode definir essa configuração para seu
dbContext
instância externa como o exemplo de código abaixo, do meu ponto de vista (veja o comentário @GertArnold), essa abordagem será melhor, pois não alterará o comportamento ou a configuração padrão do banco de dados):myDbContext.Configuration.UseDatabaseNullSemantics = true;