4

获取此行的异常:

public bool isEngageOn()
    {
line 149  -> return chatUserRepository.Table.Where(c => c.TrackingOn).Any();
    }

TrackingOn是布尔类型。

.Any()假设“确定天气一个序列包含任何元素”,那么为什么 Elmah 捕获的异常“System.InvalidOperationException Sequence contains no elements”?

错误:

System.InvalidOperationException: Sequence contains no elements
 at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
 at System.Linq.Queryable.Any[TSource](IQueryable`1 source)
 at sf2015.Models.DomainModels.Services.ChatServices.isEngageOn() in C:\....\ChatServices.cs:line 149

ps:无法重现错误,但有时会显示在Elmah错误日志中。

以下是存储库的一些代码

public virtual IQueryable<T> Table
    {
        get
        {
            return this.Entities;
        }
    }

    private DbSet<T> Entities
    {
        get
        {
            if (_entities == null)
                _entities = Context.Set<T>();
            return _entities;
        }
    }
4

3 回答 3

0

正确的用途是

return chatUserRepository.Table.Any(c => c.TrackingOn)

于 2012-10-04T14:58:51.230 回答
0

您提供的堆栈跟踪表明,.Single如果未找到任何元素,异常来自哪个异常。您可以将上述代码更改为:

 return chatUserRepository.Table.Any(c => c.TrackingOn);

这将与您的线路相同。

于 2013-01-08T13:26:47.777 回答
0

我有完全相同的问题。

正在使用该方法Any(),但 StackTrace 在该Single()方法上显示错误。

Configuration问题的原因是 Entity Framework Code First类的方法 Seed() 。

我的方法是在没有注册表的表上Seed()使用该方法。Single()

于 2015-04-23T01:07:30.733 回答