“强制转换为值类型'布尔值'失败,因为具体化值为 null”,当没有任何内容为空时

本文关键字:null 任何内 失败 转换 类型 布尔值 因为 具体化 | 更新日期: 2023-09-27 18:17:22

我有这一行

if (EF.ctx.Searches.Any(x => x.SearchTerm == _searchTerm && x.IpAddress == ip && x.Time > dtRecent))

随机抛出此错误(很少,不可重现(

强制转换为值类型"布尔值"失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可为 null 的类型。

在数据库中,只有 IpAddress 可为空(但到目前为止,没有具有空 IpAddress 的记录(。
每次抛出错误时,没有一个变量为空。

最接近的类似问题是 Queryable.Any(( 返回 null?
但是这个错误对我来说仍然没有意义。

我真的很好奇,那行到底是什么可以的?

堆栈跟踪:

at System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader 1.GetValue(DbDataReader reader, Int32 ordinal) at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Coordinator 1.ReadNextElement(Shaper shaper( at System.Data.Common.Internal.Materialization.Shaper 1.SimpleEnumerator.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable 1 source( at System.Data.Objects.ELinq.ObjectQueryProvider.b__3[TResult](IEnumerable 1 sequence) at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable 1 query, Expression queryRoot( at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](表达式表达式( at System.Linq.Queryable.Any[TSource](IQueryable 1 source, Expression 1 谓词( 在[我的代码,上面的行]

“强制转换为值类型'布尔值'失败,因为具体化值为 null”,当没有任何内容为空时

就我而言,就像数据库有一些变化,所以我们清理了一些表,仅此而已。

我的意思是建议是修改您的数据库。