【问题标题】:'Nullable object must have a value.' for List in LINQ c#'可为空的对象必须有一个值。'对于 LINQ c# 中的列表
【发布时间】:2018-03-23 05:21:01
【问题描述】:

在数据库中,我有下一个模型 tblWorkItem 和下一个字段:

public List<xWorkItemItemFailReason> WorkItemItemFailReasons { get; set; }

当我试图从数据库中获取tblWorkItem 数据时

_db.tblWorkItem.Where(x=>x.WorkItemItemFailReasons != null)

我有下一个错误

System.InvalidOperationException: 'Nullable 对象必须有一个值。'

如何检查此字段是否为空?

【问题讨论】:

  • 试试这个_db.tblWorkItem.Where(x=&gt;x.WorkItemItemFailReasons.Count() != 0)
  • @SlavaUtesinov 仍然有同样的错误
  • 这是特定于字段的错误。检查哪个字段不可为空并设为可空

标签: c# entity-framework linq .net-core


【解决方案1】:

xWorkItemItemFailReason 类中的问题。它有一些原始类型的属性(intlong,...),不能为空,但在数据库表中没有值。 检查它们。

【讨论】:

  • 有点违反直觉的异常信息
【解决方案2】:

在您的模态类中有一些不可为空的字段,因此当从数据库中获取时,它带有空值。所以让它可以为空。public int? FieldName {Get;set;}

【讨论】:

    【解决方案3】:

    如果它的 .net core 3.0 或更早版本存在一个已知问题,

    简单的查询过滤器破坏了简单的投影 https://github.com/dotnet/efcore/issues/13517

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多