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によって文書化されています:
2つのオペランドを比較するときに、データベースのnullセマンティクスが表示されるかどうかを示す値を取得または設定します。どちらも潜在的にnull可能です。デフォルト値はfalseです。
DbContext
で設定できます 次のようなサブクラスコンストラクタ:
public class MyContext : DbContext
{
public MyContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
または、この設定をdbContext
に設定することもできます 以下のコード例のような外部からのインスタンス、私の観点から(@GertArnoldコメントを参照)、デフォルトのデータベースの動作や構成を変更しないため、このアプローチの方が優れています):
myDbContext.Configuration.UseDatabaseNullSemantics = true;