2014-06-18 89 views
0

我正在開發MVC應用程序。 我在數據庫中有大約8000條記錄。如何在MVC中從數據庫加載記錄頁面?

我已經使用MVC.Grid來顯示這些記錄。 我的問題是,我加載控制器方法中的所有8000條記錄。 我想取它明智或記錄的某些部分頁面,每次像100記錄......

如何做到這一點?

 public ActionResult Index(int? page, string searchContent = "") 
     { 

      ProductService productService = new ProductService(); 


      var pageNumber = (page ?? 1); 
      var pagesize = 15; 

      int id = Convert.ToInt32(Session["loggedEmpId"]); 
      CommonService.SetEmployeeId(id); 

      ProductService ProductService = new ProductService(); 
      var productList = ProductService.GetProductInventory(); 

      LocationService locationservice = new LocationService(); 

      var loclist = locationservice.GetAll().Where(x => x.Type != LocationTypeDTO.HO).ToList(); 
      ViewBag.loc = loclist; 
      ViewBag.SearchContent = searchContent; 

      return View(productList.ToPagedList(pageNumber, pagesize)); 

     } 



    public IEnumerable<ProductDTO> GetProductInventory() 
     { 
      List<ProductDTO> ProductDTOList = new List<ProductDTO>(); 
      UnitOfWork uow = new UnitOfWork(); 
      IEnumerable<Product> ProductList = uow.ProductRepo.GetInventoryList(); 
      foreach (Product product in ProductList) 
      { 
       ProductDTO productDTO = Transform.Product2DTO(product); 
       ProductDTOList.Add(productDTO); 
      } 
      return ProductDTOList; 
     } 
+0

使用'。取(100 )'獲得100條記錄。另外看看[這裏](http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework- in-an-asp-net-mvc-application) –

+0

如何使用.Take(100)方法?和哪裏? – bnil

回答

0

在99%的情況下,您不應顯示全部8000條記錄。您可以使用pagination。您應該在動作中獲得100條記錄並顯示它。

更新: 你有非常混亂和錯誤的代碼。 您應該爲您的請求使用Take()和Skip()。

我不知道該怎麼辦ToPagedList方法

如果你想獲取從數據庫中只有前100個記錄,那麼你必須在服務方法做改變
+0

雅,我已經使用分頁,但它在網格中...我想知道如何從DB頁面獲取記錄...可用的任何示例? – bnil

+0

你能告訴我你的行動代碼嗎? – Mediator

+0

請,現在檢查 – bnil

1

像 -

var loclist = locationservice.GetAll().Where(x => x.Type != LocationTypeDTO.HO).Take(100).ToList(); 
+0

絕對是正確的答案。在SERVICE層中執行分頁,而不是控制器操作。 如果在控制器操作中完成,那麼當您只需要100個數據庫時,您仍然可以獲取所有記錄的數據庫/網絡性能。 在大多數情況下,這僅僅是一個實體框架表達式,Lynq或SQL表達式(或存儲過程)更改。 –

相關問題