एकाधिक सक्रिय परिणाम सेट (एमएआरएस) SQL सर्वर 2005 में पेश की गई एक सुविधा है और पोस्टग्रेज़ जैसे अन्य डेटाबेस सिस्टम में उपलब्ध नहीं है, इसलिए आप इसे कनेक्शन स्ट्रिंग में चालू नहीं कर पाएंगे।
आप जिस त्रुटि का सामना कर रहे हैं वह एक खुले डेटा रीडर पर दो प्रश्नों को करने का प्रयास करने का परिणाम है। यानी एंटिटी फ्रेमवर्क का उपयोग करते समय यह आमतौर पर तब होता है जब आपके पास आलसी लोड हो रहा हो चालू किया गया है और आलसी गुण उसी पाठक में लोड किए जाते हैं जैसे माता-पिता एंटाइट करते हैं। उदाहरण के लिए इससे मिलता-जुलता कोड यह त्रुटि उत्पन्न कर सकता है:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha"));
foreach (var user in users)
{
Console.WriteLine(user.Address.StreetName);
}
पहली पंक्ति में कोई डेटा नहीं लाया जाता है क्योंकि हमने केवल एक लिंक क्वेरी तैयार की है। जब हम foreach
. शुरू करते हैं एक DataReader
खोला गया है और हमारी शर्तों को पूरा करने वाले उपयोगकर्ताओं के संग्रह से पूछताछ की जाती है लेकिन पाठक बंद नहीं होता है। फिर foreach
. के अंदर हम उपयोगकर्ता की पता संपत्ति तक पहुंचते हैं जो आलसी लोड होता है। यह आलसी लोड उसी खुले DataReader
. पर क्वेरी निष्पादन का कारण बनता है और वह तब होता है जब अपवाद होता है। अगर मैं त्रुटि से छुटकारा पाना चाहता हूं तो मैं बस एक ToList()
जोड़ सकता हूं (या कुछ भी जो क्वेरी को निष्पादित करने का कारण बनता है) इस तरह की पंक्ति के अंत तक:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha")).ToList();
आशा है कि यह आपकी मदद करेगा।