2012-11-08 13 views
5

व्यूमोडल्स के साथ संयोजन में एएसपी एमवीसी के आधार पर एक वेब एप्लिकेशन में पेजेडलिस्ट का उपयोग कैसे करें।व्यूमोडल्स की एक पेजेडलिस्ट में इकाइयों की एक बड़ी सूची मैपिंग

मैं व्यूमोडल्स का एक पेजेडलिस्ट बनाना चाहता हूं, इसलिए सबसे पहले मुझे एंटिटीज को व्यूमोडेल में मैप करना होगा।

जब मैं एक बड़ी सूची लाता हूं, तो यह बहुत धीमा होता है क्योंकि पहले मैपिंग को पजेडलिस्ट बनने से पहले निष्पादित किया जाता है (इसलिए संस्थाओं की पूरी सूची प्राप्त की जाती है)।

इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?

IEnumerable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId); 

Mapper.CreateMap<InvoiceData, ViewModelInvoiceData>(); 
IEnumerable<ViewModelInvoiceData> vmInvoiceData = Mapper.Map<IEnumerable<InvoiceData>, IEnumerable<ViewModelInvoiceData>>(invoiceData); 

IPagedList<InvoiceDataViewModel> pagedListVMInvoiceData = vmInvoiceData.ToPagedList(page, pageSize); 

(मैं भी एक मानचित्रण ढांचे का उपयोग है, लेकिन यह निश्चित रूप से एक कस्टम नक्शाकार वर्ग के साथ एक ही समस्या है)

+0

आप क्या इसके बजाय IQueryable का उपयोग करने का प्रयास करें? क्या यह आपके डेटा सेवा द्वारा समर्थित है? Iqueryable का उपयोग करने से IPagedList डेटाबेस में क्वेरी को डिफर करने की अनुमति देगा जिससे इस प्रकार मैप किए गए ऑब्जेक्ट की संख्या को सीमित कर दिया जा सके। –

उत्तर

1

क्यों आप पेज सर्वर पर आपके डेटा नहीं किया? और इसके बाद मैन्युअल पेजर उदाहरण 2 में troygoode/PagedList से बनाते हैं?

0

मुझे एक ही समस्या थी। मैं अपने परिणामों तेज (वे अभी भी है कि तेजी से नहीं हैं, लेकिन तेज) IEnumerable

बदलें इस के बजाय IQueryable इंटरफ़ेस का उपयोग करके:

IEnumerable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId); 
इस के लिए

:

IQueryable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^