获取此行的例外:
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;
}
}
答案 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()
方法。