2017-09-04 12 views
11

मैं एफई कोर का उपयोग करता है एक ASP.Net कोर अनुप्रयोग है समर्थन नहीं करता।आंतरायिक त्रुटि: कनेक्शन MultipleActiveResultSets

मैं ASP.Net पहचान का उपयोग करें और मेरे ऐप की संस्थाओं के लिए एक ही DBContext साझा करें।

मैं एक Azure SQL डेटाबेस के लिए अपने कनेक्शन स्ट्रिंग की स्थापना की है MultipleActiveResultSet = सच है।

यह एक या दो दिन के लिए काम करता है, लेकिन अंत में यह त्रुटि के साथ विफल:

The connection does not support MultipleActiveResultSets.

मुझे नहीं लगता कि मार्स असली मुद्दा है, क्योंकि यह पहले दो दिनों यह था के लिए काम किया है। ASP.Net कोर के

मैं उपयोग कर रहा हूँ में निर्मित डि मेरी DbContext स्थापित करने के लिए।

services.AddDbContext<AppDbContext>(options => 
    options.UseSqlServer(appDbContextConnectionString)); 

मेरी समझ यह है कि उपरोक्त डीबीकॉन्टेक्स्ट के लिए डिफ़ॉल्ट जीवनकाल क्षणिक (प्रति वेब अनुरोध) है।

यह ASP.Net पहचान के साथ एक ही DBContext साझा करने के लिए ठीक है या मैं, मेरे ऐप की संस्थाओं के लिए एक अलग से एक होना चाहिए एक ही डीबी की ओर इशारा किया?

मुझे नहीं पता कि यह ईएफ कोर, एएसपी.Net कोर या SQL Azure कॉन्फ़िगरेशन के साथ कोई समस्या है या नहीं।

+0

https://github.com/aspnet/EntityFrameworkCore/issues/6491 वह द्वारा क्या मतलब है "मिडलवेयर अनुरोध के अनुसार एक गुंजाइश है?" –

+0

क्या आप कोड साझा कर सकते हैं जहां आप अपना डीबी संदर्भ इंजेक्ट करते हैं या बनाते हैं? – hugoterelle

+3

आप यह जांचना चाहेंगे कि "MultipleActiveResultSet = True" के साथ आपकी कनेक्शन स्ट्रिंग वास्तव में रनटाइम पर उपयोग की जाती है या नहीं। केवल अनुमान है। https://stackoverflow.com/questions/12690453/sql-azure-getting-an-error-there-is-already-an-open-datareader-associated-wit –

उत्तर

0

मैं इस मुद्दे में भी चल रहा था, और कनेक्शन स्ट्रिंग में MultipleActiveResultSet=True सेट करना बहुत कुछ नहीं किया।

Startup.cs में मेरे db विन्यास बहुत तुम्हारे पास क्या है के समान है:

services.AddEntityFrameworkSqlServer() 
     .AddDbContext<MyDbContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), 
      builder => builder.MigrationsAssembly("MyProject")), 
      ServiceLifetime.Transient 
     ); 

यह पता चला है क्योंकि मैं कई async db ही गई चीजों का उपयोग प्रश्नों था कि मैं

The connection does not support MultipleActiveResultSets

हो रही थी। इसलिए एक डीबी क्वेरी एक इकाई को पुनर्प्राप्त करेगी, और एक सेकंड में ईएफ कोर की नई Include विधि के माध्यम से एक ही इकाई शामिल होगी। https://stackoverflow.com/a/46164203/4336725

कारण मेरे कई एसिंक डीबी प्रश्न थे क्योंकि ईएफ कोर वर्तमान में आलसी लोडिंग (ईएफ 6 के विपरीत) का समर्थन नहीं करता है। https://github.com/aspnet/EntityFrameworkCore/issues/3797

मेरे वैकल्पिक हल अलग स्पष्ट Include() और ThenInclude() के साथ कई IQueryable रों परिभाषित करने के लिए किया गया था।

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