से अपग्रेड करने के बाद "इंडेक्स सीमा से बाहर था" विजुअल स्टूडियो 2010 से 2012 तक अपग्रेड करने के बाद कोड ने फेंकना शुरू किया "ArgumentOutOfRangeException - अनुक्रमणिका सीमा से बाहर था। गैर-ऋणात्मक और कम से कम होना चाहिए संग्रह का आकार। पैरामीटर का नाम: इंडेक्स "लिंक का उपयोग करके लिंक पूछताछ पर।लिंक से ईएफ में शामिल हों VS2010 से VS2012
सरल LINQPad में किए गए (एक एफई डेटा मॉडल का उपयोग कर) उदाहरण मुझे ArgumentOutOfRangeException देता है निम्नलिखित:
void Main()
{
var iq1 = Customers.Select(ap => ap.ID);
var iq2 = iq1.Join(Customers.Select(ap => ap.ID),
a => a,
b => b,
(a, b) => new { a });
iq2.Dump();
}
पिछले उदाहरण बदलने के दोनों किनारों से युक्त एक गुमनाम वस्तु लौटने के लिए शामिल होने नहीं देता उम्मीद ArgumentOutOfRangeException और देता है परिणाम के रूप में:
void Main()
{
var iq1 = ActionPlans.Select(ap => ap.ID);
var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
a => a,
b => b,
(a, b) => new { a, b });
iq2.Dump();
}
ठीक है, तो किसी कारण से मैं में शामिल होने के दोनों ओर लौटना पड़ा, लेकिन फिर मैं निम्न उदाहरण के बजाय एक डमी मूल्य का उपयोग कर, वह भी एक जनसंपर्क के बिना निष्पादित करने की कोशिश की oblem:
void Main()
{
var iq1 = ActionPlans.Select(ap => ap.ID);
var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
a => a,
b => b,
(a, b) => new { a, x = 1 });
iq2.Dump();
}
पहला उदाहरण ले रहा है और पहली क्वेरी करने के लिए एक ToList() जोड़ने भी यह एक समस्या के बिना निष्पादित करता है:
void Main()
{
var iq1 = ActionPlans.Select(ap => ap.ID).ToList();
var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
a => a,
b => b,
(a, b) => new { a });
iq2.Dump();
}
महत्वपूर्ण: बिना एक कार्य केंद्र पर पहली क्वेरी की कोशिश कर रहा विजुअल स्टूडियो 2012 अपग्रेड ठीक काम करता है!
क्या कोई इस नई "फीचर" की पुष्टि/व्याख्या कर सकता है? :-)
यह बग दायर किया गया है [लिंक से ईएफ में शामिल हों "इंडेक्स सीमा से बाहर था" VS2010 से VS2012 तक अपग्रेड के बाद] (https://connect.microsoft.com/VisualStudio/feedback/details/763986/linq- टू-EF-जोड़-फेंकता सूचकांक-आउट-ऑफ-सीमा के बाद उन्नयन-से-VS2010 करने वाली vs2012) था। यदि आप इसे पुन: उत्पन्न कर सकते हैं, तो माइक्रोसॉफ्ट को बताएं। यदि आपके लिए एक फिक्स महत्वपूर्ण है, तो वहां "अपवॉट" करें। –