asp.net - ASP.NET MVC API 方法非常慢
问题描述
我有一个 sql 存储过程,它返回 926 行,每行有 238 列,该存储过程需要 1 秒才能返回。现在我正在尝试在 ASP.NET MVC 中运行存储过程并在名为 Report 的模型类中返回结果,请参阅我之前的方法,但是它运行此代码并将项目返回到一个永远需要的类中,有时会冻结我的浏览器。我将如何加快这个过程?
public List<KeyValuePair<object, List<Report>>> GetReportTest(string area, int? isAlphabeticalSort)
{
List<KeyValuePair<object, List<Report>>> ReportData = new List<KeyValuePair<object, List<Report>>>();
try
{
using (connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("GetTasks", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter1 = new SqlParameter(“@area”, SqlDbType.VarChar);
parameter1.Value = area;
parameter1.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter1);
SqlParameter parameter2 = new SqlParameter("@isAlphabeticalSort", SqlDbType.Bit);
parameter2.Value = isAlphabeticalSort;
parameter2.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter2);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var model = reader.GetValue(0).ToString();
List<Report> report = new List<Report>();
for (int i = 1; i < reader.FieldCount; i++)
{
RedBlue item = new RedBlue();
if (reader.GetName(i).ToString().Contains("Task"))
{
item.task = reader.GetValue(i).ToString();
i++;
}
if (reader.GetName(i).ToString().Contains("BID"))
{
item.baselinefinish = reader.GetValue(i).ToString();
i++;
}
if (reader.GetName(i).ToString().Contains("AID"))
{
item.actualenddate = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString().Contains("ClosingDate"))
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString().Contains("DaysToClosing"))
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString().Contains("ScheduleVariance"))
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString().Contains("DaysOfConstruction"))
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString().Contains("IDNOTES"))
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
if (reader.GetName(i).ToString() == "PDIToClose")
{
item.baselinefinish = reader.GetValue(i).ToString();
redBlue.Add(item);
}
}
ReportData(new KeyValuePair<object, List<Report>>(model, report));
}
}
}
}
return ReportData;
}
finally
{
connection.Close();
}
}
解决方案
推荐阅读
- selenium-webdriver - X 射线总体需求覆盖率报告
- node.js - 如何限制用户每日发帖限制 (MERN)
- python - 在 Python 3.6 中从虚拟环境导入包
- compiler-errors - 运行 Haxeflixel hello world 项目会引发错误
- c++ - 在 C++ 项目中链接 libpq 时未定义的引用
- python - 在 Traci 的 Sumo-gui 中显示/打印文本
- flutter - 使用“GeoLocator”包时无法获取纬度和经度
- python - 我无法使用请求登录 Instagram
- webrtc - Kurento webrtc 客户端/应用程序项目
- java - 编码/解码的 Redisson 密钥的内部缓存