C# ToList()、Any()、Count()、Sum()上的Linq错误

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

我得到以下错误,它们都与system.linq有关。奇怪的是,这种方法有时似乎有效,错误的发生并不一致

Count()代码:

SecurityUploadQueues属性:

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(IEnumerable
1序列)
在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.Shaper
1.simplenumerator.MoveNext()
at System.Linq.Enumerable.Single[t源](IEnumerable
1源)at System.Data.Objects.elink.ObjectQueryProvider.c_uuu11
1.b_uuu11\u3(IEnumerable
1 序列)在 System.Data.Objects.Elink.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable
1
查询,表达式(查询对象)
位于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())