複数の句を持つエンティティフレームワークの非同期メソッドをテストする方法

StackOverflow https://stackoverflow.com//questions/21005331

質問

MOQ 4.0.10827でEF 6.0.2でASYNC方式を統括しようとしています。鋳造問題のように見えるものにブロックされています。

次の作品は大丈夫:

public async Task<List<Testimonial>> GetByEventIdAsync(int eventId)
{
    var query = from t in _context.Testimonials
                orderby t.Ordinal
                select t;
    var result = query
        .ToListAsync()
        .ConfigureAwait(false);
    return await result;
}
.

しかし、次のブレーク(AD WHERE句を追加)

public async Task<List<Testimonial>> GetByEventIdAsync(int eventId)
{
    var query = from t in _context.Testimonials
                where t.EventId == eventId
                orderby t.Ordinal
                select t;
    var result = query
        .ToListAsync()
        .ConfigureAwait(false);
    return await result;
}
.

私はいくつかのデバッグをし、次の

を見つけました
var q1 = _context.Testimonials; // Type = Castle.Proxies.IDbSet`1Proxy_1
var q2 = q1.Where(t => t.EventId == eventId); // Type = TestDbAsyncEnumerable`1 (from linked code)
var q3 = q2.OrderBy(o => o.Ordinal); // Type = System.Linq.EnumerableQuery`1
.

クラスが倍が消えているのはなぜですか?そしてどのように修正するのですか?

アップデート:私はまた、whereをバックしてorderbyを追加した場合、その問題は複数の句を持つようです。

役に立ちましたか?

解決

最後に答えを見つけました

IQUERYABLEをそのように追加する必要があります。

public class TestDbAsyncEnumerable<T> 
    : EnumerableQuery<T>, IDbAsyncEnumerable<T>, IQueryable
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top