Я создаю пример приложения MVC.Я пытаюсь экспортировать результаты поиска в Excel.Я сохранил результаты поиска в сеансе и экспортировал этот список сеансов в Excel.Это работало нормально, когда я играл с маленькой базой данных, в которой всего 2000 строк.Теперь у меня есть около 300 тысяч строк в моей базе данных.Поиск результатов и экспорт в Excel по-прежнему работает нормально.Но мое приложение резко замедлилось.
Когда я комментирую нижеприведенный код, мое приложение снова работает нормально, как только я раскомментирую, оно будет замедлено.
//Session["SearchResults"] = aPPET.ToList<APPET>();
Что было бы лучшим способом сделать это, когда большойбаза данных?
Я прочитал пост о closedxml, но не совсем уверен, как это реализовать.Нужно ли создавать процедуру магазина, если я иду по этому пути?Или есть ли лучший способ.
Пожалуйста, предложите.
Ниже приведены коды моего контроллера:
public class APPET1Controller : Controller
{
private APContext db = new APContext();
// GET: APPET1
public ActionResult Index(string search, string cagecode, string sortBy,
int? page, string docNumber, string remark, string status)
{
APPETViewModel viewModel = new APPETViewModel();
var aPPET1 = db.APPET1.Include(t =>T.APPETMedia)
.Include(t => t.Status)
.Include(t => t.APPETCCode)
.Include(t => t.APPETDType);
............some more codes..............
DateTime searchDate;
if (!String.IsNullOrEmpty(search))
{
bool isDateSearch = DateTime.TryParse(search, out searchDate);
if (isDateSearch)
{
aPPET1 = aPPET1.Where(s => s.Date_Received == searchDate);
}
else
{
aPPET1 = aPPET1.Where(t.Doc_Number.Contains(search)
|| t.Status.Status1.Contains(search)
|| t.Remark.Contains(search)
|| t.CCode.Contains(search));
..............some more codes..............
viewModel.Search = search;
}
}
var stats = db.Status.Select(s => s.Status1);
viewModel.Statuses = new SelectList(stats);
{
if (!String.IsNullOrEmpty(status))
{
aPPET1 = aPPET1.Where(t => t.Status.Status1.Contains(status));
}
}
if (!String.IsNullOrEmpty(docNumber))
{
aPPET1 = aPPET1.Where(t => t.Doc_Number.Contains(docNumber));
}
if (!String.IsNullOrEmpty(remark))
{
aPPET1 = aPPET1.Where(t => t.Remark.Contains(remark));
}
............some more codes.........
Session["SearchResults"] = aPPET.ToList<APPET>();
return View(viewModel);
}