2017-04-03 10 views
5

के साथ एक पासवर्ड संरक्षित SQL सर्वर सीई डेटाबेस कैसे खोलें मैं ईएफ 6.0 और SQL सर्वर सीई 4.0 का उपयोग कर रहा हूं। .sdf फ़ाइल पासवर्ड सुरक्षित है, जिसे मैंने लिंककैड के साथ फ़ाइल खोलकर सत्यापित किया है।एंटिटी फ्रेमवर्क

using (var context = new MyDbContext("ExamManagement")) 
{ 
    context.Database.Initialize(false); 
} 

:

निर्दिष्ट पासवर्ड डेटाबेस पासवर्ड

कोड से मेल नहीं खाता: जब मैं निम्नलिखित कनेक्शन स्ट्रिंग के साथ कोड में इस डेटाबेस को खोलने का प्रयास, मैं एक अपवाद मिल कनेक्शन स्ट्रिंग:

<connectionStrings> 
    <add name="ExamManagement" 
     connectionString="Data Source=|DataDirectory|Pikeman.sdf;Max Database Size=4091;Password=123;" 
     providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

enter image description here स्टैक ट्रेस: ​​

System.Data.Entity.Core.EntityClient.EntityConnection.Open() पर


System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection पर (बूलियन shouldMonitorTransactions)
पर System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [टी] (Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectQuery
1. <> c__DisplayClass7.b__5()
System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption पर)
प्रणाली पर .Data.Entity.Core.Objects.ObjectQuery 1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
at System.Data.Entity.Internal.LazyEnumerator
1.MoveNext()
System.Linq.Enumerable.First [TSource] (IEnumerable`1 स्रोत) पर

+0

आप सबसे अधिक संभावना एक गलत कनेक्शन स्ट्रिंग – ErikEJ

+0

उपयोग कर रहे हैं तो कृपया मेरी अद्यतन स्क्रीन शॉट देखने के लिए एक पूर्ण पथ निर्दिष्ट और उस मार्ग से डेटाबेस को खोलने के लिए, की कोशिश करो। ऐसा लगता है कि कनेक्शन स्ट्रिंग सही है लेकिन 'पासवर्ड' भाग को नजरअंदाज कर दिया गया है। –

+0

क्या आप सही डेटाबेस फ़ाइल के खिलाफ linqpad में परीक्षण कर रहे हैं? अपने बिन/डीबग फ़ोल्डर में देखें - शायद वहाँ एसडीएफ फाइल की एक प्रति है! – ErikEJ

उत्तर

1

कनेक्शन स्ट्रिंग ठीक है (आम तौर पर मैं निर्दिष्ट नहीं करते मैक्स डाटाबेस आकार, आप पैरामीटर को हटाने का प्रयास कर सकते हैं, लेकिन मैं मुझे यकीन है कि यह समस्या नहीं है)।
तो, आपके मामले में, मुझे लगता है कि आप शायद एक अलग पासवर्ड के साथ डेटाबेस खोल रहे हैं (जैसे अपवाद सुझाता है) या आप गलत डेटाबेस खोल रहे हैं। उदाहरण

<connectionStrings> 
    <add name="ExamManagement" 
     connectionString="Data Source=C:\temp\Pikeman.sdf;Password=123;" 
     providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 
+0

ठीक है। मुद्दा मिला। समस्या डिफ़ॉल्ट डीबीकॉन्टेक्स्ट कन्स्ट्रक्टर डिफ़ॉल्ट कनेक्शन स्ट्रिंग का उपयोग कर रहा था जो 'app.config' फ़ाइल में से एक से अलग है। जब DbMigrations कॉन्फ़िगरेशन डेटाबेस को बीज करता है, तो यह पासवर्ड के बिना डिफ़ॉल्ट कनेक्शन स्ट्रिंग का उपयोग करता है, जो 'app.config' कनेक्शन स्ट्रिंग के समान निर्देशिका को इंगित करने के लिए होता है। –

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