Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;转换为值类型';布尔值';失败,因为具体化的值为null;当没有空值时_C#_Entity Framework - Fatal编程技术网

C# &引用;转换为值类型';布尔值';失败,因为具体化的值为null;当没有空值时

C# &引用;转换为值类型';布尔值';失败,因为具体化的值为null;当没有空值时,c#,entity-framework,C#,Entity Framework,我有这条线 if (EF.ctx.Searches.Any(x => x.SearchTerm == _searchTerm && x.IpAddress == ip && x.Time > dtRecent)) 随机抛出此错误(很少,不可复制) 转换为值类型“Boolean”失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为空的类型 在数据库中,只有IpAddress可为空(但到目前为止,没有具有空IpAddress的记录)。 每

我有这条线

if (EF.ctx.Searches.Any(x => x.SearchTerm == _searchTerm && x.IpAddress == ip && x.Time > dtRecent))
随机抛出此错误(很少,不可复制)

转换为值类型“Boolean”失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为空的类型

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

最接近的类似问题是
但是这个错误对我来说仍然没有意义

我真的很好奇,在那一行中,究竟什么是null

堆栈跟踪:

在System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader
1.GetValue(DbDataReader reader,Int32序数)
lambda_法(闭合、整形器)
在System.Data.Common.Internal.Materialization.Coordinator中
1.ReadNextElement(整形器整形器) 在System.Data.Common.Internal.Materialization.Shaper
1.SimpleNumerator.MoveNext()中
at System.Linq.Enumerable.Single[t源](IEnumerable
1源) 在System.Data.Objects.Elink.ObjectQueryProvider.b__3[TResult](IEnumerable
1序列)
在System.Data.Objects.Elink.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable
1查询,表达式queryRoot) 位于System.Data.Objects.Elink.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](表达式) at System.Linq.Queryable.Any[TSource](IQueryable
1源,表达式
1谓词)
在[我的代码,上面一行]


在我的例子中,数据库有一些变化,所以我们清理了一些表,就是这样


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

当您说“不可复制”时,您是否正在使用数据库、相同参数等进行测试?如果是,您是否可以分析数据库并执行一些压力测试以尝试强制执行此操作?这可能是你最好的机会。很难相信
任何一个
会在这里抛出一些异常。应该将它转换为一些sql查询(使用
EXISTS
),这里的物化结果只是从
位转换而来的
bool
。SQL查询应始终返回
0
1
。但不知何故,物质化无法实现。您可以检查生成的sql查询(尽管我认为它可能不涉及-直接对db执行应该可以,并返回一个0或1位)。@KirkBroadhurst是的,在catch块中,我使用完全相同的参数重新计算表达式,它不会再次抛出异常。我尝试了一个循环,对失败的同一个表达式求值,1000秒的时间,无法复制它。我遇到了完全相同的问题,从我自己的观察中,我在将结果选择到自定义类中时遇到了这个问题。如果我复制了相同的东西,但是使用了动态转换(new{blah=blah…}),那么除了“cast to type Int32”之外,我会得到相同的错误。我的问题是,什么样的参数埋在其他参数中,我不知道它是哪一个。