मेरे पास काम की एक इकाई है और ईएफ 4 और पीओसीओ का उपयोग करके एक भंडार है। चूंकि ईएफ को छोड़ने से पहले ऑर्डर किए गए सेट की आवश्यकता होती है() और टेक(), मैंने यह देखने के लिए कि क्या यह काम करता है, रिकॉर्ड को खींचने के लिए मैंने निम्नलिखित यूनिट टेस्ट (मैक्स के बिना) जोड़ा है।मुझे समझने में सहायता करें "LINQ से संस्थाएं केवल कास्टिंग इकाई डेटा मॉडल आदिम प्रकारों का समर्थन करती हैं"
var myList = UOW.EntityRepo.Get(orderbyLambda: p => p.ID, page: 1, pageSize: 1);
यह परिणाम orderbyLambda = {p => Convert(p.ID)}
और गणना के दौरान एक त्रुटि की अभिव्यक्ति में परिणाम देता है। आईडी tinyint
(Int16/short)
तो यह आईडी द्वारा आदेश देने में विफल क्यों होता है? त्रुटि
Unable to cast the type 'System.Int16' to type 'System.Object'.
बारे में मैं के रूप में Expression<Func<E, object>> orderbyLambda
संपादित orderbyLambda को परिभाषित:
असली हत्यारा यदि मैं यह कर रहा है:
orderbyLambda: p => new { p.ID }
यह काम करता है ... क्यूं कर?
ऑर्डरबीलैम्ब्डा: पी => नया {पी.आईडी} काम किया ... बहुत रोचक ... –
मुझे अपनी रिपॉजिटरी एपीआई के ऑर्डरबी भाग बनाने की कोशिश करने में एक ही समस्या थी। LINQ से इकाइयों को ऑर्डरबी (e => e.SomeCollection.Count) पर झुकाया गया। ऑर्डरबी (e => new {e.SomeCollection.Count}) में अभिव्यक्ति को बदलना भी मेरे लिए काम करता है। – danludwig
+1 ऊपर जैतूनहोर की टिप्पणी के लिए, यह मेरे लिए भी काम किया। – Beyers