मैं पहले कोड के साथ ईएफ 4 का उपयोग कर रहा हूं और दृढ़ता और एक सेवा परत के लिए एक भंडार है जो इसके साथ बातचीत करता है। मेरे पास एक सेवा परत विधि है जो मेरे भंडार पर एक IQueryable विधि को कॉल करती है और इकाइयों वाले एक आईनेमेरेबल को लौटाती है। मुझे कुल रिकॉर्ड गिनती वापस करने की भी आवश्यकता है ताकि मैं पेजिंग लिंक की गणना कर सकूं।मुझे अपनी सेवा परत विधि से कुल रिकॉर्ड गिनती और पायदान रिकॉर्ड के IENumable संग्रह का खुलासा कैसे करना चाहिए?
मैं अपने सेवा विधि से दोनों पूर्णांक और IEnumerable वापसी करना चाहिए?
- गिनती
- एक अलग वर्ग कुल पंक्ति एक संपत्ति
- सेवा परत से बाहर पेजिंग LINQ क्वेरी ले जाएँ के रूप में गिनती भी शामिल है कि बनाएं कुल पंक्ति के लिए विधि पर एक बाहर पैरामीटर का उपयोग करें (बेनकाब सेवा परत पर रेपो)
- सेवा परत है कि बस गिनती के लिए एक नई क्वेरी करता है पर एक पूर्ण अलग पद्धति बनाएं से IQueryable।
इन सभी को काम करना चाहिए, लेकिन कौन सा सबसे साफ है?
अद्यतन: यहां आर्किटेक्चर का कुछ स्पष्टीकरण दिया गया है। यदि यह गलत है, तो कृपया मुझे बेहतर तरीका बता (जैसे -, आदि सेवा परत के बजाय प्रस्तुति परत में पेजिंग करते हैं)
रेपो परत:
रिटर्न DbSet की IQueryable, डाटाबेस पहुँच सार प्रस्तुति परत से
सेवा परत:
फिल्टर करने के लिए करता है IQueryable पर एक LINQ क्वेरी और बस के रूप में छोड़ सकते हैं और लेने का उपयोग कर की जरूरत है और देता है एक IEnumerable (जा रहा भी पर सूची को सेट करने के लिए पेज आइटम प्राप्त
कॉल सेवा परत पर विधि (getPagedResults (फिल्टर, PAGENUMBER, pageSize))
यह दिखता है मैं भी होगा से: किसी भी DbContext जीवन मुद्दों
प्रस्तुति परत से बचने के लिए) वापसी कुल परिणाम प्राप्त करने के लिए एक अलग विधि जोड़ने की आवश्यकता है। यह सब एक कॉल में करने की उम्मीद कर रहा था।
मैं प्रस्तुति के लिए सभी रिकॉर्ड वापस नहीं लेना पसंद करूंगा और फिर पृष्ठ ... अक्षम लगता है।
पर एक नजर डालें आप पहले से ही 'लौट रहे हैं तो IEnumerable' वहाँ तुम सिर्फ प्रयोग नहीं करते '.Count()' कुछ विशेष कारण 'IEnumerable' पर है? क्या आप बस सबसेट को सामने के अंत में पेश कर रहे हैं? पेजिंग के लिए फ्रंट एंड ज़िम्मेदार नहीं होना चाहिए? –
AllenG
आपके द्वारा वापस आने वाले आईनेमरेबल, क्या इसमें सभी आइटम शामिल हैं? (गिनती के रूप में आइटमों का एक ही एनआर वापस आ जाएगा) – Magnus
@ एलेनजी - मैं सर्विस लेयर में पेजिंग कर रहा था, फिर यूआई/कोडबेइंड उपभोक्ता को एक सूची लौटा रहा था। इस तरह से मैं अपने Dbcontext जीवनकाल के साथ किसी भी मुद्दे से बच सकते हैं। इसके अलावा, मुझे सभी रिकॉर्ड को सामने के अंत में भेजने की ज़रूरत नहीं है, फिर पेजिंग करें .. सीधे सेवा परत क्वेरी में आवश्यक रिकॉर्ड्स प्राप्त करेंगे। – jpshook