我遇到了以下错误,它们都与 System.Linq 相关。奇怪的是,该方法有时候能正常工作,而这些错误并不总是发生。
Count() 代码:
using (var dbContext = new Entities(GlobalStuff.EntityConnection))
{
heartBeat.NumSlipsInSecurityUploadQueue = dbContext.SecurityUploadQueues.Count();
heartBeat.NumSlipsInDataStreamQueue = dbContext.DataStreamQueues.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() 错误:
上传心跳错误 System.InvalidOperationException:序列中包含多个元素
在System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)处 在System.Data.Objects.ELinq.ObjectQueryProvider.<>c__111.b__11_3(IEnumerable`1 sequence)处 在System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)处
在System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)处
在System.Linq.Queryable.Count[TSource](IQueryable`1 source)处
在SettlerService.SettlerService.UploadHeartBeat()处
Any() 代码:
var dataToUpload = (from bet in dbContext.DataStreamQueues select bet).Take(200);
if (dataToUpload.Any())
任意(Any())错误:
System.InvalidOperationException异常:从实体化的“System.Int32”类型到“System.Boolean”类型的指定转换无效。 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.Shaper1.SimpleEnumerator.MoveNext() at System.Linq.Enumerable.Single[TSource](IEnumerable
1 source) at System.Data.Objects.ELinq.ObjectQueryProvider.<>c__111.<GetElementFunction>b__11_3(IEnumerable
1 sequence) at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable1 query, Expression queryRoot) at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.Any[TSource](IQueryable
1 source)我已经进行了一些谷歌搜索,但没有找到太多关于这个问题的信息。 我认为这可能与system.core库的版本有关(其中包括system.linq),但我并没有发现任何问题。 我正在使用.NET 4.7.2
dbContext.SecurityUploadQueues
是如何定义的? - haim770SecurityUploadQueues
属性似乎是一个包含Expression
的IQueryable
,并且可能没有直接指向DbSet<>
。但如果您不展示代码的话,很难确定。 - haim770