C# ToList()、Any()、Count()、Sum()上的Linq错误
我得到以下错误,它们都与system.linq有关。奇怪的是,这种方法有时似乎有效,错误的发生并不一致 Count()代码: SecurityUploadQueues属性:C# ToList()、Any()、Count()、Sum()上的Linq错误,c#,entity-framework,linq,C#,Entity Framework,Linq,我得到以下错误,它们都与system.linq有关。奇怪的是,这种方法有时似乎有效,错误的发生并不一致 Count()代码: SecurityUploadQueues属性: Public ReadOnly Property SecurityUploadQueues() As ObjectSet(Of SecurityUploadQueue) Get If (_SecurityUploadQueues Is Nothing) Then
Public ReadOnly Property SecurityUploadQueues() As ObjectSet(Of SecurityUploadQueue)
Get
If (_SecurityUploadQueues Is Nothing) Then
_SecurityUploadQueues = MyBase.CreateObjectSet(Of SecurityUploadQueue)("SecurityUploadQueues")
End If
Return _SecurityUploadQueues
End Get
End Property
Private _SecurityUploadQueues As ObjectSet(Of SecurityUploadQueue)
SecurityUploadQueue属性是EntityObject
Count()错误:
上载检测信号系统时出错。InvalidOperationException:序列包含多个元素at System.Linq.Enumerable.Single[TSource](IEnumerable
1源)
在System.Data.Objects.elink.ObjectQueryProvider.c_uu11
1.b_u11_u3(IEnumerable1序列)
在System.Data.Objects.Elink.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable
1查询,表达式queryRoot)在System.Data.Objects.Elink.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](表达式)中
在System.Linq.Queryable.Count[TSource](IQueryable`1源)中
在setterservice.setterservice.UploadHeartBeat()上 Any()代码: 任何()错误: System.InvalidOperationException:从 “System.Boolean”类型的物化“System.Int32”类型不是 有效。在 System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader
1.GetValue(DbDataReader
lambda_方法(闭包、整形器)处的读取器,Int32序数)
系统、数据、公共、内部、物化、协调器
成型机)在
System.Data.Common.Internal.Materialization.Shaper1.simplenumerator.MoveNext()
at System.Linq.Enumerable.Single[t源](IEnumerable
1源)at
System.Data.Objects.elink.ObjectQueryProvider.c_uuu111.b_uuu11\u3(IEnumerable
1
序列)在
System.Data.Objects.Elink.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable1
查询,表达式(查询对象)
位于System.Data.Objects.Elink.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](表达式)
在System.Linq.Queryable.Any[TSource](IQueryable
1 source)中
在setterservice.setterservice.UploadDataStream()上
我在谷歌上搜索了一下,在这个问题上找不到什么。我认为它可能与system.core库(system.linq是其中的一部分)的版本有关,但没有发现问题。我正在使用.Net 4.7.2第二个错误意味着DataStreamQueues
数据库表中有一列的类型为Int32
,但DataStreamQueues
实体中的等效属性的类型为bool;因此,请检查所有列和属性类型是否匹配。
关于第一个异常,有点奇怪!由于此异常表明在代码中的某个地方,您正在对具有多个项的集合调用Single()方法,并且Single()
只需要一个项,因此它会引发异常,但是在提供的代码中,我没有看到对Single()
的任何调用。您似乎在使用实体框架。听起来您需要查看一些EF映射。您是对的,我们使用的是Entity Framework 5。什么映射会导致错误?如何定义dbContext.SecurityUploadQueues?因此dbContext是在数据库的第一个edmx文件中定义的,SecurityUploadQueues是数据库中的一个表,根据错误判断,似乎SecurityUploadQueues
属性是一个IQueryable
属性,它已经包含一个表达式
,它可能不会直接指向DbSet
。但是如果你不显示代码,很难判断
Public ReadOnly Property SecurityUploadQueues() As ObjectSet(Of SecurityUploadQueue)
Get
If (_SecurityUploadQueues Is Nothing) Then
_SecurityUploadQueues = MyBase.CreateObjectSet(Of SecurityUploadQueue)("SecurityUploadQueues")
End If
Return _SecurityUploadQueues
End Get
End Property
Private _SecurityUploadQueues As ObjectSet(Of SecurityUploadQueue)
var dataToUpload = (from bet in dbContext.DataStreamQueues select bet).Take(200);
if (dataToUpload.Any())