gpt4 book ai didi

entity-framework - Linq 到实体 : "Sequence contains no elements" with Count()

转载 作者:行者123 更新时间:2023-12-05 01:11:59 26 4
gpt4 key购买 nike

在我们的应用程序中,有一段代码包含一些有时会引发异常的 Linq 查询 (EF)。

这只发生在最终用户身上,目前我们无法重现。

从日志文件中我们得到了异常的以下堆栈跟踪:

System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Single[TSource](IEnumerable1 source)
at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3[TResult](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.Count[TSource](IQueryable
1 source) at MT3.uctXGrid.LoadLayout(String strUniqueID, Boolean rethrowException, List`1 visibleColumns)

在方法中LoadLayout Count() 只有两个实例, 他们只是在标准 IQueryable 上运行s 它根据一个整数字段询问实体类型并选择所有字段(没有聚合或任何东西)。

例如:

from p in cxt.genData where datId = ID

在堆栈跟踪中,内部似乎是 .Single()正在使用,如果没有记录,可能会引发异常。

但如果我们只是调用 .Count() 为什么要使用 single ?

怎样才能像这样查询

(from p in cxt.genData where datId = ID).Count()

抛出“序列不包含任何元素”异常?

我们在查询方面也遇到了其他奇怪的问题,我开始怀疑我们的 EF 版本是否有任何问题。

我们目前仍处于 4.0 版本。 (VS2010 附带的标准版本)。

有人知道这里会发生什么吗?

更新:以下是我们实际使用的 Linq-to-Entities 查询

Dim qryLastLayout = From t In oContext.genGridLayouts Where t.layID = intCurrentLayoutID  
If Not IsNothing(qryLastLayout) AndAlso qryLastLayout.Count <> 0 Then

Dim qryPrintSettings = From p In oContext.genPrintSettings Where p.prtDefault = True
If Not IsNothing(qryPrintSettings) AndAlso qryPrintSettings.Count <> 0 Then

最佳答案

您是否尝试过使用 .Any() 方法?

if(cxt.genData.Any(x => x.datId == ID))
{
// do something here
}

关于entity-framework - Linq 到实体 : "Sequence contains no elements" with Count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com