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

.NET 7 Web API用EF Core 7查询Login字段遇空值异常问题

.NET 7 Web API + EF Core 7:可空字段查询抛出SqlNullValueException问题解决

问题场景

使用.NET 7 Web API搭配EF Core 7.0.11,数据库中Login字段为可空的nvarchar(100)类型,执行以下查询代码时抛出异常:

List<Operator> op = await _dbContext.Operator.Where(w => w.Login == "somelogin").ToListAsync();

异常信息

An exception occurred while iterating over the results of a query for context type 'DataBase.DBContext.DbContext'. System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.

对比情况

  • 通过非空的IdOperator字段查询可正常运行,例如:
    List<Operator> t = await _dbContext.Operator.Where(w => w.IdOperator == 1).ToListAsync();
    
  • 另一个从.NET 6升级到.NET 7的项目,使用相同的Login查询逻辑无异常。

问题根源与解决办法

原因

项目的*.csproj文件中启用了nullable(配置为<Nullable>enable</Nullable>),但EF Core对应的Operator实体类里,Login属性未添加可空标记?,导致EF Core在映射可空数据库字段到非可空.NET类型时,遇到Null值触发异常。

解决步骤

  1. 确认项目*.csproj中的nullable配置为enable
  2. 修改Operator实体类,将Login属性声明为可空类型:
    // 原非可空写法
    // public string Login { get; set; }
    
    // 修改为可空类型
    public string? Login { get; set; }
    
  3. 重新编译并运行项目,查询即可正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:17:03