1

Devart DotConnect forPostgreSQLコネクタを使用してEntityFrameworkエンティティのnullフィールドをクエリすると、奇妙な動作が見られます。

例:次の2つのテストを行った場合:

var test1 = context.blocs.Where(x => x.id_bloc == null);

var test2 = context.blocs.Where(x => x.id_bloc == 100);

EF自動生成SQLクエリをチェックすると、次の結果が得られます。

test1の結果:

{選択する
 CAST(NULL AS int)AS "C1"、
 CAST(NULL AS varchar)AS "C2"、
 CAST(NULL AS varchar)AS "C3"、
 CAST(NULL AS varchar)AS "C4"
FROM(SELECT 1 AS X)AS "SingleRowTable1"
WHERE true = false}

test2の結果:

{選択する
"Extent1" .id_bloc、
"Extent1" .numero、
"Extent1" .nom、
"Extent1" .titre
FROM "role" .bloc AS "Extent1"
WHERE "Extent1" .id_bloc = 100}

nullフィールドをクエリしたときの結果は非常に奇妙です...テスト2の結果と同様の結果を期待していましたが、"Extent1".id_bloc IS NULLWHERE句があります...

バグですか?nullフィールドを効果的にクエリするにはどうすればよいですか?

4

1 に答える 1

1

id_blocプロパティはエンティティキー属性で定義されていますか?はいの場合、結果のSQLは正しく生成されます。

Entity Keyをnull許容にすることはできません。そのため、EntityFrameworkはテーブルへの不要な要求を回避します。同じ空の結果セットを提供するがサーバーリソースを消費しない偽のSQLを生成します。

SQL Serverで(System.Data.SqlClientを介して)動作を確認できます。同じである必要があります。

于 2012-10-31T09:58:49.767 に答える