6

मैं सामान्य रूप से एंटिटी फ्रेमवर्क और यहां तक ​​कि ADO.NET के लिए बिल्कुल नया हूं (आमतौर पर डेटाबेस के साथ अधिक काम नहीं करता)।एंटिटी फ्रेमवर्क के साथ MySQL - मैं गलत क्या कर रहा हूं?

  1. मैंने डाउनलोड किया और MySQL Connector/NET 6.3.5 स्थापित किया।
  2. मैं दृश्य स्टूडियो में एक नई सी # परियोजना 2010
  3. मैं अपने प्रोजेक्ट के लिए एक नया ADO.NET इकाई डेटा मॉडल जोड़ा गया है और चुना बनाया "डेटाबेस से उत्पन्न करें।"
  4. मैंने अपने स्थानीय MySQL सर्वर w/सर्वर नाम "localhost" + मेरे उपयोगकर्ता नाम और पासवर्ड के साथ एक नया कनेक्शन जोड़ा।
  5. मैंने वस्तुओं को उत्पन्न करने के लिए अपने MySQL डेटाबेस से सभी तालिकाओं की जांच की।

(things सिर्फ एक फर्जी तालिका मैं कुछ मनमाना क्षेत्रों के साथ एक साथ फेंक दिया है।)

TestDataEntities entities = new TestDataEntities(); 

var things = entities.things.Execute(MergeOption.AppendOnly); // exception 

ऊपर एक NullReferenceException फेंक दिया और मैं वास्तव में के रूप में पता कर रहा हूँ:

  • मैं निम्नलिखित कोड लिखा था ऐसा क्यों हो सकता है। जब मैं कनेक्शन का परीक्षण करता हूं, तो यह कहता है कि यह सफल रहा। मैंने निश्चित रूप से सही उपयोगकर्ता नाम और पासवर्ड के साथ कनेक्शन स्थापित किया है। मुझे यह भी पता नहीं है कि जांच करने के लिए और क्या है।

    आप में से जो लोग वास्तव में इस सामान के बारे में पता के लिए, यहाँ अपवाद मुझे मिल गया (,, हालांकि मेरे अप्रशिक्षित आंखों के लिए यह वास्तव में नहीं लगती है जैसे कि यह सब है कि मददगार होगा) है:

     
        at MySql.Data.MySqlClient.MySqlClientFactory.get_MySqlDbProviderServicesInstance() 
        at MySql.Data.MySqlClient.MySqlClientFactory.System.IServiceProvider.GetService(Type serviceType) 
        at System.Data.Common.DbProviderServices.GetProviderServices(DbProviderFactory factory) 
        at System.Data.Metadata.Edm.StoreItemCollection.Loader.InitializeProviderManifest(Action`3 addError) 
        at System.Data.Metadata.Edm.StoreItemCollection.Loader.OnProviderManifestTokenNotification(String token, Action`3 addError) 
        at System.Data.EntityModel.SchemaObjectModel.Schema.HandleProviderManifestTokenAttribute(XmlReader reader) 
        at System.Data.EntityModel.SchemaObjectModel.Schema.HandleAttribute(XmlReader reader) 
        at System.Data.EntityModel.SchemaObjectModel.SchemaElement.ParseAttribute(XmlReader reader) 
        at System.Data.EntityModel.SchemaObjectModel.SchemaElement.Parse(XmlReader reader) 
        at System.Data.EntityModel.SchemaObjectModel.Schema.HandleTopLevelSchemaElement(XmlReader reader) 
        at System.Data.EntityModel.SchemaObjectModel.Schema.InternalParse(XmlReader sourceReader, String sourceLocation) 
        at System.Data.EntityModel.SchemaObjectModel.Schema.Parse(XmlReader sourceReader, String sourceLocation) 
        at System.Data.EntityModel.SchemaObjectModel.SchemaManager.ParseAndValidate(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, AttributeValueNotification providerNotification, AttributeValueNotification providerManifestTokenNotification, ProviderManifestNeeded providerManifestNeeded, IList`1& schemaCollection) 
        at System.Data.Metadata.Edm.StoreItemCollection.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths) 
        at System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, Memoizer`2& cachedCTypeFunction) 
        at System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths) 
        at System.Data.Metadata.Edm.MetadataCache.StoreMetadataEntry.LoadStoreCollection(EdmItemCollection edmItemCollection, MetadataArtifactLoader loader) 
        at System.Data.Metadata.Edm.MetadataCache.StoreItemCollectionLoader.LoadItemCollection(StoreMetadataEntry entry) 
        at System.Data.Metadata.Edm.MetadataCache.LoadItemCollection[T](IItemCollectionLoader`1 itemCollectionLoader, T entry) 
        at System.Data.Metadata.Edm.MetadataCache.GetOrCreateStoreAndMappingItemCollections(String cacheKey, MetadataArtifactLoader loader, EdmItemCollection edmItemCollection, Object& entryToken) 
        at System.Data.EntityClient.EntityConnection.LoadStoreItemCollections(MetadataWorkspace workspace, DbConnection storeConnection, DbProviderFactory factory, DbConnectionOptions connectionOptions, EdmItemCollection edmItemCollection, MetadataArtifactLoader artifactLoader) 
        at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections) 
        at System.Data.EntityClient.EntityConnection.InitializeMetadata(DbConnection newConnection, DbConnection originalConnection, Boolean closeOriginalConnectionOnFailure) 
        at System.Data.EntityClient.EntityConnection.Open() 
        at System.Data.Objects.ObjectContext.EnsureConnection() 
        at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
        at System.Data.Objects.ObjectQuery`1.Execute(MergeOption mergeOption) 
        at EntityFrameworkTest.Form1..ctor() in D:\Development\EntityFrameworkTest\Form1.cs:line 23 
        at EntityFrameworkTest.Program.Main() in D:\Development\EntityFrameworkTest\Program.cs:line 18 
        at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
        at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
        at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
        at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
        at System.Threading.ThreadHelper.ThreadStart() 
    
  • +0

    राल्फ ने यहां प्रश्न भी पोस्ट किया: http://forums.mysql.com/read.php?47,391001,391001 –

    +0

    और उत्तर जो मेरे लिए हल किया गया था, MySql.Data.Entity.dll को कॉपी करना था मेरे होस्ट किए गए ऐप के लिए बिन निर्देशिका। – sipwiz

    +0

    मुझे लगता है कि यह स्टैक-एक्सचेंज [प्रस्ताव] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "कोड समीक्षा") आपके लिए ब्याज का हो सकता है। यदि यह आपका समर्थन दिखाता है और इसे बीटा में लाने में मदद करता है ताकि आप अन्य लोगों के कोड पर मजाक उड़ा सकें! :) – greatwolf

    उत्तर

    2

    यह एक प्रदाता बग है। यह एक बग हो सकता है जो कॉन्फ़िगरेशन त्रुटि द्वारा ट्रिगर किया गया है, लेकिन फिर भी यह एक प्रदाता बग है। आपको उन लोगों से बात करनी चाहिए जिन्होंने आपका MySQL प्रदाता लिखा था, और उन्हें उस स्टैक और टेस्ट केस भेजना चाहिए।

    1

    ठीक है, मुझे नहीं पता कि यह ऐसा तरीका है या नहीं (यदि यह है, तो मैं थोड़ा शर्मिंदा हूं - हालांकि मेरी रक्षा में मैं कहीं भी देखने में विफल रहता हूं यह स्पष्ट रूप से संकेत दिया गया है); लेकिन ऐसा लगता है कि समस्या यह थी कि मेरा लक्ष्य ढांचा .NET 3.5 पर सेट किया गया था। मेरे प्रोजेक्ट के लक्ष्य ढांचे को बदलने के बाद (ईमानदारी से, एक whim पर) .NET 4.0, NullReferenceException चला गया।

    तो, जैसा कि असंतुष्ट हो सकता है, ऐसा लगता है कि यह मेरे मामले में समाधान रहा है।

    +0

    मुझे 'System.NullReferenceException मिलता है: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं होता है। MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken (DbConnection कनेक्शन) पर System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken पर (DbConnection कनेक्शन) ... 'अगर मैं MySql.Data.EF6.dll में नवीनीकृत और .NET 4. –

    13

    मैं

    +0

    को लक्षित करने के लिए भूल जाओ लेकिन कोई टिप्पणी नहीं? –

    +2

    एक मिलियन अपवॉट्स अगर मैं – BigJoe714

    +0

    कर सकता था यह मेरे लिए काम किया – Shanadas

    1

    MySqlClientFactory- में MySql.Data.Entity.dll (और MySql.Web.dll) के लिए एक संदर्भ> MySqlDbProviderServicesInstance संपत्ति जोड़कर इस त्रुटि पिछले मिला। यह संदर्भ गधा: MySql.Data.Entity कोड

    string str = Assembly.GetExecutingAssembly().FullName.Replace("MySql.Data", "MySql.Data.Entity");

    का उपयोग लेकिन MySQL ग्राहक में 6.3.5 MySqlData के संस्करण 6.3.5 है, और MySql.Data.Entity के संस्करण 6.3.4 है (\ प्रोग्राम फ़ाइलें \ MySQL \ MySQL कनेक्टर नेट 6.3.5 \ Assemblies \ v2.0) में। इसलिए यह इसे सफलतापूर्वक लोड नहीं कर सकता है।

    फ़ोल्डर में (\ प्रोग्राम फ़ाइलें \ MySQL \ MySQL कनेक्टर नेट 6.3.5 \ Assemblies \ v4.0), MySQL.Data.Entity का संस्करण 6.3.5 है, इसलिए यह सफलतापूर्वक लोड हो सकता है।

    तो एक तरीका लक्ष्य .NET 4.0 में बदल गया है, और दूसरा MySQL.Data को 6.3.2/6.1.2 पर रोल कर रहा है।

    2

    अच्छी खबर! इस समस्या को MySQL Connector/NET 6.3.6 में हल किया गया है समस्या को हल करने के लिए अपने MySQL कनेक्टर को अद्यतन करें।

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