簡體   English   中英

如何在 Entity Framework Core (Oracle) 中使用條件字段為 null

[英]how to use the condition field is null in Entity Framework Core (Oracle)

我需要在 linq 中使用條件“field is null”,我嘗試使用“field == null”但它沒有給我帶來記錄。

var query = from p in _context.Product
where p.PRODUCT_IND_CHANGE == null
select new ProductViewModel { Id = p.PRODUCT_ID, name = p.PRODUCT_NAME };

我做了這個小子查詢來理解為什么它不起作用。

SELECT 
(SELECT count(1)
        FROM PRODUCTS
        WHERE PRODUCT_IND_CHANGE != NULL
) AS SYMBOL_OPERATOR1
,(SELECT count(1)
        FROM PRODUCTS
        WHERE PRODUCT_IND_CHANGE IS NULL
) AS SYMBOL_OPERATOR2
FROM DUAL

查詢示例

有沒有辦法在 linq 中使用“where field is null”或模擬它?

圖書館:

  • Microsoft.EntityFrameworkCore(版本 6.0.8)
  • Oracle.EntityFrameworkCore(版本 6.21.61)

更新 1:

剛剛查看了日志,轉換為pl sql代碼時打印如下

2022-10-06 17:36:53.0309|DEBUG|Microsoft.EntityFrameworkCore.Query|192.168.1.15|Generated query execution expression: 
'queryContext => new SingleQueryingEnumerable<ProductViewModel>(
    (RelationalQueryContext)queryContext, 
    RelationalCommandCache.SelectExpression(
        Projection Mapping:
            Id -> 0
            Name -> 1
        SELECT s.PRODUCT_ID AS Id, s.PRODUCT_NAME AS Name
        FROM PRODUCT AS s
        WHERE s.PRODUCT_IND_CHANGE == NULL), 
    Func<QueryContext, DbDataReader, ResultContext, SingleQueryResultCoordinator, ProductViewModel>, 
    API.SGA.Products.Data.DbContext, 
    False, 
    False, 
    True
)'|

你試過了嗎

where p.PRODUCT_IND_CHANGE.Equals(null)

在 Linq?

在SQL應該是

WHERE PRODUCT_IND_CHANGE IS NOT NULL

您班級的“PRODUCT_IND_CHANGE”屬性是否可以為空? 就像是

public int? PRODUCT_IND_CHANGE {get; set; }

暫無
暫無

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

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