另一个System.InvalidOperationException:Sequence不包含任何元素(使用.Any())

时间:2012-10-04 14:55:50

标签: c# linq entity-framework elmah

获取此行的例外:

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

TrackingOn的类型为boolean。

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

错误:

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

p.s。:无法重现错误,但有时会显示Elmah错误日志。

以下是存储库的一些代码

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

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

3 个答案:

答案 0 :(得分:0)

正确使用

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

答案 1 :(得分:0)

您提供的堆栈跟踪说明异常来自.Single,如果没有找到任何元素,它会抛出上述异常。您可以将提到的代码更改为:

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

哪一行与你的行相同。

答案 2 :(得分:0)

我有完全相同的问题。

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

问题的原因是实体框架代码优先Configuration类上的方法Seed()。

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