簡體   English   中英

如何使用DotConnect for PostgreSQL向Entity Framework實體查詢空字段值

[英]How to query an Entity Framework entity for null field value with DotConnect for PostgreSQL

當使用Devart DotConnect for PostgreSQL連接器查詢Entity Framework實體的空字段時,我觀察到一個奇怪的行為。

例如:如果我進行了以下2個測試:

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

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

在檢查EF自動生成的SQL查詢時,我得到以下結果:

test1的結果:

{SELECT 
 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的結果:

{SELECT 
"Extent1".id_bloc,
"Extent1".numero,
"Extent1".nom,
"Extent1".titre
FROM "role".bloc AS "Extent1"
WHERE "Extent1".id_bloc = 100}

查詢空字段時的結果非常奇怪...我期望的結果類似於測試2的結果,但是帶有"Extent1".id_bloc IS NULL WHERE子句...

是蟲子嗎? 如何有效查詢空字段?

id_bloc屬性是否使用Entity Key屬性定義? 如果是,則正確生成結果SQL。

實體鍵不能為空,這就是為什么實體框架避免對表進行不必要的請求的原因:生成偽造的SQL,該虛假SQL提供相同的空結果集,但不占用服務器資源。

您可以使用SQL Server(通過System.Data.SqlClient)檢查行為-它必須相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM