【发布时间】:2017-06-29 06:23:54
【问题描述】:
在我的 ASP.NET MVC (C#) 应用程序中,我使用 Entity Framework 并像这样调用存储过程:
public virtual ObjectResult<ART_USP_GetAssetReportGridList_Result> ART_USP_GetAssetReportGridList(string searchExpression, string sortExpression, string sortDirection, Nullable<int> startIndex, Nullable<int> pageSize, ObjectParameter count)
{
var searchExpressionParameter = searchExpression != null ?
new ObjectParameter("SearchExpression", searchExpression) :
new ObjectParameter("SearchExpression", typeof(string));
var sortExpressionParameter = sortExpression != null ?
new ObjectParameter("SortExpression", sortExpression) :
new ObjectParameter("SortExpression", typeof(string));
var sortDirectionParameter = sortDirection != null ?
new ObjectParameter("SortDirection", sortDirection) :
new ObjectParameter("SortDirection", typeof(string));
var startIndexParameter = startIndex.HasValue ?
new ObjectParameter("StartIndex", startIndex) :
new ObjectParameter("StartIndex", typeof(int));
var pageSizeParameter = pageSize.HasValue ?
new ObjectParameter("PageSize", pageSize) :
new ObjectParameter("PageSize", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ART_USP_GetAssetReportGridList_Result>("ART_USP_GetAssetReportGridList", searchExpressionParameter, sortExpressionParameter, sortDirectionParameter, startIndexParameter, pageSizeParameter, count);
}
这里的ART_USP_GetAssetReportGridList是存储过程名称。这是一个同步调用。如果记录数超过 3000,则此调用将给我超时错误。
如何在不出现超时错误的情况下异步进行此调用?
【问题讨论】:
-
每次 sql 往返不允许超过 100 条记录 (pageSize)。解决的办法不是异步调用sp,而是利用已有的分页机制。
-
在将记录绑定到网格视图时使用分页机制。但我也使用相同的方法导出到 excel。因为页面大小将是总记录,在这种情况下我不能限制页面大小的调用。
标签: c# asp.net-mvc entity-framework asynchronous