在我的 ASP.NET MVC(C#)应用程序中,我正在使用实体框架并调用这样的存储过程:
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,则此调用会给出超时错误。
如何在不收到超时错误的情况下异步进行此调用?
答案 0 :(得分:0)
将此异步调用不会有任何区别。您收到命令超时错误。我要避免这种情况,你应该增加SQL连接的CommandTimeout设置。但我非常建议不要这样做,并查看你的存储过程效率 - 30秒默认超时应该是方式,比你需要的方式更多。
答案 1 :(得分:0)
您可以按如下方式增加特定操作的超时时间。
<div className='row'>
<div>row1</div><div>row2</div><div>row3</div>
</div>
或者在DbContext构造函数上设置此代码。
答案 2 :(得分:0)
请试试这个
var data = ObjectContext.Database.SqlQuery<ART_USP_GetAssetReportGridList_Result>("ART_USP_GetAssetReportGridList", searchExpressionParameter, sortExpressionParameter, sortDirectionParameter, startIndexParameter, pageSizeParameter, count).FirstOrDefaultAsync();