Setel UseDatabaseNullSemantics = true
;
-
Ketika
UseDatabaseNullSemantics == true
,(operand1 == operand2)
akan diterjemahkan sebagai:WHERE operand1 = operand2
-
Ketika
UseDatabaseNullSemantics == false
,(operand1 == operand2)
akan diterjemahkan sebagai:WHERE ( (operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) ) OR ( (operand1 IS NULL) AND (operand2 IS NULL) )
Ini didokumentasikan oleh Microsoft:
Mendapat atau menetapkan nilai yang menunjukkan apakah semantik nol basis data ditampilkan saat membandingkan dua operan, yang keduanya berpotensi nullable. Nilai defaultnya salah.
Anda dapat mengaturnya di DbContext
konstruktor subkelas, seperti:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Atau Anda juga dapat mengatur pengaturan ini ke dbContext
contoh dari luar seperti contoh kode di bawah ini, dari sudut pandang saya (lihat komentar @GertArnold), pendekatan ini akan lebih baik, karena tidak akan mengubah perilaku atau konfigurasi database default):
myDbContext.Configuration.UseDatabaseNullSemantics = true;