2012-12-01 8 views
5

कर सकूं, मैं क्लाइंट जावास्क्रिप्ट के लिए Breezejs का उपयोग कर रहा हूं। मुझे यकीन नहीं है कि Breezejs (IQueryable का उपयोग कर सर्वर पक्ष) का उपयोग करते समय क्वेरी की कुल गणना कैसे प्राप्त करें जिसमें फ़िल्टर (जहां खंड) लागू होता है।Breezejs में TotalRows गणना कैसे प्राप्त करें, ताकि मैं पेजिंग

+0

@NS - अगर आपको लगता है कि ब्रीज़ में नई "इनलाइनकाउंट" सुविधा आपके प्रश्न को पूरा करती है, तो कृपया जय के जवाब के तहत चेकमार्क पर क्लिक करें जिसमें उसने घोषणा की कि "इनलाइन काउंटर" ब्रीज़ का हिस्सा है। – Ward

उत्तर

5

वी 0.75.1 के रूप में हमने EntityQuery में एक नई 'इनलाइन काउंटी' विधि जोड़ दी है। कृपया अधिक जानकारी के लिए हवा एपीआई दस्तावेज़ देखें। उम्मीद है कि यह आपको जो चाहिए वह प्रदान करेगा।

+1

वू-हू! http://www.breezejs.com/sites/all/apidocs/classes/EntityQuery.html#method_inlineCount – John

1

Support $inlinecount in queries वर्तमान में समीक्षा अधीन है - कृपया इसके लिए वोट दें।

+0

आपकी आवाज सुनी गई थी और हम वर्तमान में इस पर काम कर रहे हैं। यह जल्द ही उपलब्ध होना चाहिए (दिन)। – Ting

+1

आपकी आवाज़ सुनी गई थी और यह वी .75.1 – Ward

1

अद्यतन: $ inlineCount v.0.75.1 के रूप में ब्रीज़ में है, इस उत्तर को अप्रचलित रूप से प्रस्तुत करना।

तदनुसार, मैंने अपना जवाब हटा दिया है जिसमें एक वर्कअराउंड (यहां उनके जवाब में उमट ओज़ेल द्वारा एक वर्कअराउंड सुधार हुआ है) का वर्णन किया गया है। नई सुविधा इस एसओ द्वारा संचालित थी। प्रश्न और आपके सभी योगदान। धन्यवाद।

+0

हाय वार्ड के रूप में ब्रीज़ में है, मैंने जवाब के रूप में अपना छोटा बदलाव जोड़ा है। इस हैक बीटीडब्ल्यू के लिए धन्यवाद, यह एक आकर्षण की तरह काम करता है। –

+0

वार्ड आपने समाधान को हटा दिया क्यों समाधान –

+0

समाधानों को हमेशा अच्छा लगा क्योंकि मैंने इसे हटा दिया क्योंकि मैंने इसे एक बार हटाने का वादा किया था जब ब्रीज़ ने इनलाइन गणना सुविधा जोड़ दी थी। लोगों को कामकाज से भ्रमित क्यों करें? बीटीडब्ल्यू, मेरा कामकाज ठीक से ओडाटा स्पेक के अनुरूप नहीं था। – Ward

2

हमने वार्ड के समाधान में थोड़ा बदलाव किया, क्योंकि संख्यात्मक। गणना डीबी से सभी रिकॉर्ड लोड करती है, न केवल गिनती है (हमें एसक्यूएल प्रोफाइलर देखने के बाद यह एहसास हुआ)।

सबसे पहले हम IQueryable.Count एक्सटेंशन विधि के लिए एक रैपर बनाते हैं (क्योंकि हम प्रतिबिंब के माध्यम से एक एक्सटेंशन विधि नहीं कॉल कर सकते हैं)।

public static class QueryWrapper { 
    public static int Count<T>(IQueryable<T> query) where T: class { 
     return query.Count(); 
    } 
} 

और हम

if (actionExecutedContext.Request.RequestUri.Query.Contains("$inlinecount")) { 
    if (dQuery is IQueryable) { 
     inlineCount = Enumerable.Count(dQuery); 
    } 
} 
इस कोड के साथ

बदल गया है,

if (actionExecutedContext.Request.RequestUri.Query.Contains("$inlinecount")) { 
    if (dQuery is IQueryable) { 
     var method = typeof(QueryWrapper).GetMethod("Count"); 
     var genericMethod = method.MakeGenericMethod(elementType); 
     inlineCount = (int)genericMethod.Invoke(null, new object[] { dQuery }); 
    } 
} 

इस परिवर्तन के बाद, इकाई की रूपरेखा केवल गिनती हो जाता है, नहीं सभी रिकॉर्ड।

उम्मीद है कि इससे मदद मिलती है।

एक अच्छा दिन है।

+0

सुधार के लिए धन्यवाद! मुझे वापस जाना होगा और इसे मेरे हैक में जोड़ना होगा। बेहतर अभी तक, हमें इसे उत्पाद में प्राप्त करना चाहिए :) – Ward

+0

मुझे मदद करने में खुशी है :) –

+0

अब v 0.75.1 के साथ हवा के हिस्से के रूप में उपलब्ध है। स्रोत में आप Enumerable.Count (dQuery) -> Queryable.Count (dQuery) से परिवर्तन को नोट कर सकते हैं, जो एक ही चीज़ को पूरा करता है। –

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