我已经有了几个月的以下代码,它一直都很好用:
public PagedResult GetPagedData(int id, Dictionary<string, string> queryStringParameters)
{
PagedResult pagedReturn = new PagedResult(queryStringParameters);
IQueryable<MyData> myData = GetMyData(id, queryStringParameters);
pagedReturn.SetPagesFromTotalItems(myData.Count());
myData = myData.OrderByDescending(i => i.SomeDate).Skip(pagedReturn.Skip).Take(pagedReturn.PageSize);
var list = myData.ToList(); // ***TIME OUT HAPPENS HERE***
List<MyDataListing> listings = this._mapper.Map<List<MyDataListing>>(list);
pagedReturn.listings = new List<IListing>(listings);
return pagedReturn;
}
出于一些奇怪的原因,今天我开始在我调用ToList()的行上出现超时错误(见上文)。确切的错误如下:
超时已过期。操作完成之前经过的超时时间或服务器没有响应。
pagedReturn.Skip的值为0,pagedReturn.PageSize为500.我通过重新排列代码解决了这个问题:
public PagedResult GetPagedData(int id, Dictionary<string, string> queryStringParameters)
{
PagedResult pagedReturn = new PagedResult(queryStringParameters);
IQueryable<MyData> myData = GetMyData(id, queryStringParameters).OrderByDescending(i => i.SomeDate);
pagedReturn.SetPagesFromTotalItems(myData.Count());
if (pagedReturn.Skip > 0)
{
myData = myData.Skip(pagedReturn.Skip);
}
myData = myData.Take(pagedReturn.PageSize);
var list = myData.ToList();
List<MyDataListing> listings = this._mapper.Map<List<MyDataListing>>(list);
pagedReturn.listings = new List<IListing>(listings);
return pagedReturn;
}
这是什么问题?为什么它今天随机开始计时?该代码几个月来一直没有被触及,就像我上面所说的那样,已经好几个月了。据我所知,数据库中与查询中的表相关的任何内容最近都没有改变。