Экспорт результатов поиска в Excel в Asp.Net MVC замедлил работу всего приложения - PullRequest
0 голосов
/ 22 мая 2018

Я создаю пример приложения 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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...