我有这个方法
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 集合。当这个集合在数据库中很大(30000+)时,上述方法中的以下几行超时。当收藏量很小时,它们不会。
list = query.OrderBy(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();
和
list = query.OrderByDescending(orderBy).Skip(pageSize * pageIndex).Take(pageSize).ToList();
我无法调试这个(不要问),但是(对我来说)投标集合与拍卖一起被急切地加载似乎是合乎逻辑的。我该如何解决这个问题?它甚至是一个急切的加载问题吗?