![](/img/trans.png)
[英]How to use DotConnect For PostgreSQL and entity framework code first
[英]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.