Nastavte UseDatabaseNullSemantics = true
;
-
Když
UseDatabaseNullSemantics == true
,(operand1 == operand2)
bude přeloženo jako:WHERE operand1 = operand2
-
Když
UseDatabaseNullSemantics == false
,(operand1 == operand2)
bude přeloženo jako:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Toto je zdokumentováno společností Microsoft:
Získává nebo nastavuje hodnotu, která označuje, zda se při porovnávání dvou operandů, z nichž oba mohou potenciálně nulovat, projeví sémantika null databáze. Výchozí hodnota je false.
Můžete to nastavit ve vašem DbContext
konstruktor podtřídy, třeba takto:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Nebo můžete toto nastavení také nastavit na váš dbContext
instance zvenčí, jako je příklad kódu níže, z mého pohledu (viz komentář @GertArnold) bude tento přístup lepší, protože nezmění výchozí chování nebo konfiguraci databáze):
myDbContext.Configuration.UseDatabaseNullSemantics = true;