You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 Core API按Week_nb查询触发空引用异常问题求助

问题原因与解决方法

错误原因

你的wareh_KPI_IN实体类标记了[Keyless]特性,这会让EF Core将其识别为无键实体。而FindAsync方法是EF Core专门用于通过主键查找实体的API,无键实体没有主键定义,调用该方法会触发内部空引用异常。

解决方法

替换FindAsync为Linq过滤查询,根据Week_nb字段筛选数据,具体有两种实现方式:

方式1:返回单个匹配结果(适用于Week_nb唯一的场景)

[HttpGet("{Week_nb}")]
public async Task<IActionResult> Get(int Week_nb)
{
    var wareh_KPI_IN = await _esmDashboardContext.wareh_KPI_IN
        .FirstOrDefaultAsync(x => x.Week_nb == Week_nb);
    
    // 无匹配数据时返回404,更符合REST API规范
    if (wareh_KPI_IN == null)
    {
        return NotFound();
    }
    
    return Ok(wareh_KPI_IN);
}

方式2:返回所有匹配结果(适用于Week_nb不唯一的场景)

[HttpGet("{Week_nb}")]
public async Task<IActionResult> Get(int Week_nb)
{
    var wareh_KPI_INs = await _esmDashboardContext.wareh_KPI_IN
        .Where(x => x.Week_nb == Week_nb)
        .ToListAsync();
    
    return Ok(wareh_KPI_INs);
}

补充说明

无键实体通常用于映射视图、临时结果集等没有主键的数据源,EF Core不支持对无键实体使用FindAsync、Update、Delete等依赖主键的操作,所有数据操作都需要通过Linq查询来实现。

内容的提问来源于stack exchange,提问作者Chanka1021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36