4

この行で例外を取得する:

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

TrackingOnブール型です。

.Any()は、「シーケンスに要素が含まれている天気を判別する」と想定されているのに、なぜ例外「System.InvalidOperationExceptionシーケンスに要素が含まれていない」がElmahでキャッチされたのでしょうか。

エラー:

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 に答える