मुझे DBQuery<T>
मिला है जो IQueryable<T>
में परिवर्तित हो जाता है (यह बिट ठीक काम करता है)। लेकिन तब मैं एक ObjectQuery को IQueryable कन्वर्ट करने के लिए कोशिश कर रहा हूँ .. जो विफल रहता है: -मैं एक ऑब्जेक्टिव <T> पर एक DBQuery <T> कैसे परिवर्तित कर सकता हूं?
public void Foo(this IQueryable<T> source)
{
// ... snip ...
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
// ... do stuff ...
}
}
यह इससे पहले कि मैं इकाई-फ्रेमवर्क 4 CTP5 जादू यूनिकॉर्न, ऐसा ऐसा में बदला काम करता था। अब, यह काम नहीं कर रहा है - यानी। objectQuery
null
है।
अब, DBQuery<T> inherits IQueryable<T>
.. इसलिए मैंने सोचा कि यह काम करना चाहिए।
तो मैं करने के लिए कोड बदलने ..
var x = (ObjectQuery<T>) source;
उसके बाद निम्न अपवाद फेंक दिया जाता है: -
System.InvalidCastException: प्रकार 'System.Data की डाली वस्तु करने में असमर्थ। Entity.Infrastructure.DbQuery
1[Tests.Models.Order]' to type 'System.Data.Objects.ObjectQuery
1 [टेस्ट.मोडल्स.ऑर्डर] '।
कोई सुझाव?
तुम क्यों ObjectQuery करने के लिए इसे कास्ट करने के लिए की जरूरत है? – anon
मुझे लगता है कि आपको एक ऐसी विधि की आवश्यकता होगी जो एक DBQuery लेता है और ऑब्जेक्टQuery बनाता है। वह या एक स्पष्ट रूपांतरण। मुझे एहसास है कि उनमें से एक दर्द है, यद्यपि। –
यह एक दिलचस्प सवाल है। DbQuery ऑब्जेक्टक्वायर के साथ सीधा संबंध नहीं है, DbContext बनाम ऑब्जेक्ट कॉन्टेक्स्ट के विपरीत। मुझे संदेह है कि प्रत्यक्ष रूपांतरण संभव है। दोबारा, आपको फिर से जांच करनी चाहिए कि आपको पहली जगह में कास्ट की जरूरत क्यों है। इसके अलावा, "स्रोत" कहां से आ रहा है? – anon