1

私はこの方法を持っています

public ReadOnlyCollection<Auction> GetAuctionsByCriteria(Expression<Func<Auction, bool>>[] whereConditions, int pageSize, int pageIndex, out int total, AuctionCriteria criteria)
{
    // Applying filters
    var query = _composeFilter(criteria);

    // Adding external condition
    foreach (var whereCondition in whereConditions)
    {
        query = query.Where(whereCondition);
    }

    // Ordering and converting to list
    var orderBy = _getOrderBy(criteria);

    total = query.Count();
    List<Auction> list;
    if (criteria.Ascending)
        list = query.OrderBy(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();
    else
        list = query.OrderByDescending(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();

    return new ReadOnlyCollection<Auction>(list);
}

台詞

これで、Auction オブジェクトに Bids コレクションが関連付けられました。データベースでこのコレクションが大きい場合 (30,000 以上)、上記のメソッドの次の行でタイムアウトが発生します。コレクションが小さいときはそうではありません。

list = query.OrderBy(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();

list = query.OrderByDescending(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();

これをデバッグすることはできません (聞かないでください) が、Bids コレクションがオークションと共に積極的に読み込まれていることは (私には) 論理的に思えます。この問題を解決するにはどうすればよいですか? それは熱心な読み込みの問題ですか?

4

0 に答える 0