entity framework - ADO.NET प्रदाता के लिए invariant name 'System.Data.SqlClient' के साथ कोई इकाई फ्रेमवर्क प्रदाता नहीं मिला




entity-framework (20)

Azure पर एक सीई डीबी से एसक्यूएल सर्वर से माइग्रेट करते समय मुझे एक संबंधित समस्या थी। इसे हल करने की कोशिश कर रहे 4 घंटे बर्बाद हो गए। उम्मीद है कि यह किसी को भी एक समान भाग्य बचा सकता है। मेरे लिए, मेरे पास संकुल.कॉन्फिग फ़ाइल में एसक्लसी का संदर्भ था। इसे हटाने से मेरा पूरा मुद्दा हल हो गया और मुझे माइग्रेशन का उपयोग करने की अनुमति मिली। वाई माइक्रोसॉफ्ट अनावश्यक रूप से जटिल सेटअप और कॉन्फ़िगरेशन मुद्दों के साथ एक और तकनीक के लिए।

NUget द्वारा EF6 डाउनलोड करने के बाद और मेरी प्रोजेक्ट को चलाने का प्रयास करें, यह निम्न त्रुटि देता है:

ADO.NET प्रदाता के लिए invariant name 'System.Data.SqlClient' के साथ कोई इकाई फ्रेमवर्क प्रदाता नहीं मिला। सुनिश्चित करें कि प्रदाता अनुप्रयोग कॉन्फ़िगरेशन फ़ाइल के 'entityFramework' अनुभाग में पंजीकृत है। अधिक जानकारी के लिए http://go.microsoft.com/fwlink/?LinkId=260882 देखें।


YourModel.edmx फ़ाइल का विस्तार करें और YourModel.Context.cs क्लास को YourModel.Context.tt के अंतर्गत खोलें।

मैंने उपयोग खंड में निम्न पंक्ति जोड़ा और त्रुटि मेरे लिए तय की गई थी।

SqlProviderServices = System.Data.Entity.SqlServer.SqlProvider सेवा का उपयोग कर;

जब भी फ़ाइल स्वत: जेनरेट की जाती है तो आपको फ़ाइल में इस लाइन को जोड़ना पड़ सकता है।


आपको अपने कंसोल एप्लिकेशन में एंटीटी फ्रेमवर्क इंस्टॉल करने की आवश्यकता नहीं है, आपको केवल असेंबली EntityFramework.SqlServer.dll के संदर्भ को जोड़ने की आवश्यकता है। आप इस असेंबली को क्लास लाइब्रेरी प्रोजेक्ट से कॉपी कर सकते हैं जो एक LIB फ़ोल्डर में एंटीटी फ्रेमवर्क का उपयोग करता है और इसके लिए एक संदर्भ जोड़ता है।

संक्षेप में:

  • कक्षा पुस्तकालय आवेदन:
    • इकाई फ्रेमवर्क स्थापित करें
    • अपना डेटा लेयर कोड लिखें
    • app.config फ़ाइल में कनेक्शन स्ट्रिंग को छोड़कर इकाई फ्रेमवर्क से संबंधित सभी कॉन्फ़िगरेशन हैं।
  • कंसोल, वेब या डेस्कटॉप एप्लिकेशन बनाएं:
    • पहली परियोजना का संदर्भ जोड़ें।
    • EntityFramework.SqlServer.dll का संदर्भ जोड़ें।
    • app.config / web.config में कनेक्शन स्ट्रिंग है (याद रखें कि कॉन्फ़िगरेशन एंट्री का नाम डीबीकॉन्टेक्स्ट क्लास के नाम के समान होना चाहिए।

मुझे उम्मीद है यह मदद करेगा।


आपने क्लास लाइब्रेरी प्रोजेक्ट में ईएफ जोड़ा है। आपको इसे उस प्रोजेक्ट में जोड़ने की भी आवश्यकता है जो इसका संदर्भ देता है (आपका कंसोल ऐप, वेबसाइट या जो भी हो)।


इस समारोह को जोड़ें

private void FixEfProviderServicesProblem()

पुस्तकालय वर्ग में डेटाबेस संदर्भ वर्ग और अनुपलब्ध DLL EntityFramework.SqlServer.dll को सही स्थानों पर कॉपी किया जाएगा।

namespace a.b.c
{
    using System.Data.Entity;

    public partial class WorkflowDBContext : DbContext
    {
        public WorkflowDBContext()
            : base("name=WorkflowDBConnStr")
        {
        }

        public virtual DbSet<WorkflowDefinition> WorkflowDefinitions { get; set; }
        public virtual DbSet<WorkflowInstance> WorkflowInstances { get; set; }
        public virtual DbSet<EngineAlert> EngineAlerts { get; set; }
        public virtual DbSet<AsyncWaitItem> AsyncWaitItems { get; set; }
        public virtual DbSet<TaskItem> TaskItems { get; set; }
        public virtual DbSet<TaskItemLink> TaskItemLinks { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }

        private void FixEfProviderServicesProblem()
        {
            // The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
            // for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. 
            // Make sure the provider assembly is available to the running application. 
            // See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
            var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
        }
    }
}


एसक्यूएल सर्वर कॉम्पैक्ट 4.0 के साथ एंटीटी फ्रेमवर्क 6 का उपयोग करते समय मुझे एक ही त्रुटि मिली। ईएफ 6 के लिए इकाई फ्रेमवर्क प्रदाता के लिए एमएसडीएन पर आलेख उपयोगी था। पैकेज प्रबंधक कंसोल पर nuget संकुल के रूप में संबंधित प्रदाता आदेशों को चलाने से समस्या हल हो सकती है, साथ ही NuGet संकुल स्वचालित रूप से कॉन्फ़िगरेशन फ़ाइल में पंजीकरण जोड़ देंगे। मैं समस्या हल करने के लिए PM> Install-Package EntityFramework.SqlServerCompact भाग गया।


जब परीक्षण परियोजनाओं में त्रुटि होती है तो सबसे सुंदर समाधान परीक्षण वर्ग को सजाने के साथ होता है:

[DeploymentItem("EntityFramework.SqlServer.dll")]

जैसा कि संदेश दिखाता है कि हमें प्रदाता System.Data.SqlClient जोड़ने की आवश्यकता है, यही कारण है कि हमें एंटीटीफ्रेमवर्क के nuget पैकेज को स्थापित करने की आवश्यकता है जिसमें दो डीएल हैं लेकिन यदि हम केवल कंसोल एप्लिकेशन विकसित कर रहे हैं तो हमें केवल EntityFramework.SqlServer.dll का संदर्भ जोड़ना होगा।


नोट: मॉडल से डाटाबेस एसक्यूएल उत्पन्न करते समय मुझे यह समस्या थी। इसने सभी टेबल ठीक बनाए थे लेकिन परिवर्तनों को निर्यात नहीं करेंगे। आपको नोटिस करने की आवश्यकता है कि यह त्रुटि तब उत्पन्न होती है जब आप डीडीएल जनरेशन टेम्पलेट का उपयोग एसएसडीएलटीएसक्यूएल 10 के रूप में एसक्यूएल निर्यात करने का प्रयास करते हैं। यह यहां MySQL कनेक्शन की अपेक्षा कर रहा है, इसलिए सुनिश्चित करें कि आप मॉडल गुणों पर डीडीएल जेनरेशन टेम्पलेट एसएसडीएलटीएमआईएसक्यूएल ड्रॉप डाउन से चुनें। इस पर एक पूरा दिन बिताओ!


प्रोजेक्ट होस्ट करने के लिए EntityFramework.SqlServer जोड़ने के बजाय आप इस तरह के मॉडल / इकाई प्रोजेक्ट से इसके लिए एक स्थिर संदर्भ सुनिश्चित कर सकते हैं

static MyContext()
{
    var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
    if(type == null)
        throw new Exception("Do not remove, ensures static reference to System.Data.Entity.SqlServer");
}

इससे बिल्ड प्रक्रिया में होस्ट प्रोजेक्ट के साथ असेंबली शामिल होगी।

मेरे ब्लॉग पर अधिक जानकारी http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/ निर्भरता- http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/ copy- http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/ fails- http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/ copy http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/


मुझे एक ही त्रुटि है। यह अजीब बात है कि यह तब होता है जब भी मैं अपने डीबीकॉन्टेक्स्ट का उपयोग किसी भी मॉडल से पूछताछ करने के लिए करता हूं या इसकी सूची प्राप्त करता हूं:

var results = _dbContext.MyModel.ToList();

हमने इकाई फ्रेमवर्क को पुनर्स्थापित करने का प्रयास किया, इसे ठीक से संदर्भित किया लेकिन इसका कोई फायदा नहीं हुआ।

सौभाग्य से, हमने ALL समाधानों के लिए Nuget की जांच करने की कोशिश की, फिर सबकुछ अपडेट करें या सुनिश्चित करें कि everything एक ही संस्करण है क्योंकि हमने देखा है कि दोनों परियोजनाओं में वेब प्रोजेक्ट पर अलग-अलग ईएफ संस्करण हैं। और यह काम करता है। त्रुटि चली गई है।

सभी समाधानों के लिए Nuget को प्रबंधित करने के तरीके पर स्क्रीनशॉट यहां दिया गया है:


मुझे भी एक ही समस्या थी। मेरी समस्या को निम्नलिखित करके हल किया गया था:


मेरे पास एक ही समस्या थी, मैंने प्रोजेक्ट से ऐप कॉन्फ़िगर फ़ाइल की प्रतिलिपि बनाई जिसमें मेरे परीक्षण प्रोजेक्ट में डीबीसीएन्टेक्स्ट था


मेरे मामले में, सब ठीक से काम कर रहा था तो अचानक काम करना बंद कर दिया क्योंकि मुझे लगता है कि रिशेर्पर ने कुछ बदलावों को बदल दिया जिससे समस्या हुई। मेरी परियोजना डेटा परत, सेवा और प्रस्तुति परत में विभाजित किया गया था। मेरे पास एंटीटी फ्रेमवर्क स्थापित था और मेरी डेटा परत में संदर्भित था लेकिन फिर भी त्रुटि दूर नहीं गई। अनइंस्टॉल करना और पुनर्स्थापित करना या तो काम नहीं करता था। आखिरकार, मैंने इसे डेटा स्टार्टअप प्रोजेक्ट बनाने, माइग्रेशन बनाने, डेटाबेस अपडेट करने और स्टार्टअप प्रोजेक्ट को मेरी प्रस्तुति परत में बदलकर हल किया।


मैं एक समान अपवाद फेंक दिया था। मैं शामिल हूं

using System.Data; 
using System.Data.Entity;

और सब कुछ फिर से काम करने के लिए वापस आ गया है ..


मैं बस एक ही समस्या में आया और ऐसा लगता है कि EntityFramework हालांकि NuGet पैकेज प्रबंधक से स्थापित प्रोजेक्ट में सही ढंग से स्थापित नहीं किया गया था।

मैं पैकेज प्रबंधक कंसोल पर निम्न आदेश चलाकर इसे ठीक करने में कामयाब रहा:

PM> Install-Package EntityFramework

मैंने लगभग सभी उपरोक्त कोशिश की और कुछ भी काम नहीं किया।

केवल तभी जब मैंने डिफॉल्ट प्रोजेक्ट EntityFramework और EntityFramework.SqlServer में संदर्भित डीएलएल सेट किए हैं। EntityFramework EntityFramework.SqlServer गुण Copy Local को True Copy Local यह काम करना शुरू कर दिया!


यदि आप "EntityFramework.SqlServer.dll" को शामिल करना भूल जाते हैं तो आप यह संदेश भी देख सकते हैं

यह ईएफ 6 में एक नई जोड़ा फ़ाइल प्रतीत होता है। प्रारंभ में मैंने इसे अपने मर्ज मॉड्यूल में शामिल नहीं किया था और यहां सूचीबद्ध समस्या में भाग लिया था।


साथ ही, सुनिश्चित करें कि स्टार्टअप प्रोजेक्ट वह प्रोजेक्ट है जिसमें आपका dbcontext (या प्रासंगिक app.config) शामिल है। मेरा एक वेबसाइट प्रोजेक्ट शुरू करने की कोशिश कर रहा था जिसमें सभी आवश्यक कॉन्फ़िगरेशन सेटिंग्स नहीं थीं।


हर किसी को मुझे आपकी ध्यान देने की ज़रूरत है कि दो डीएलटी EntityFramework.dll और EntityFramework.SqlServer.dll डेटाएप लेयर लाइब्रेरी हैं और इन्हें देखने या किसी अन्य परत में उपयोग करने के लिए तार्किक नहीं है। यह आपकी समस्या हल करता है लेकिन यह तार्किक नहीं है।

तार्किक तरीका यह है कि enitiess विशेषता उन्हें फ़्लुएंट एपीआई के साथ हटा दें और बदलें। यह वास्तविक समाधान है





entity-framework