2012-10-12 9 views
10

मैं एसक्यूएल कॉम्पैक्ट 4.0 के साथ पहले ईएफ प्रोजेक्ट को कोड का प्रयास कर रहा हूं। जब मैं प्रोजेक्ट को चलाने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है कि "डेटाबेस 'मास्टर' में डाटाबेस अनुमति को अस्वीकार कर दिया गया है।"एसक्यूलेक्सप्रेस से कनेक्ट होने वाली इकाई फ्रेमवर्क एसक्यूएल कॉम्पैक्ट

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

context.Database.Connection.ConnectionString "Data Source=.\\SQLEXPRESS;Initial Catalog=Ancestors.Models.AncestorsContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE" string 

भले ही मेरी web.config फ़ाइल निम्न अनुभागों में शामिल हैं ... किसी भी विचार क्यों एफई एक कनेक्शन बनाने पर जोर है एसक्यूएल के बजाय SQLEXPRESS करने

<connectionStrings> 
    <add name="DefaultConnection" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=|DataDirectory|\aspnet-Ancestors-20121012114712.sdf" /> 
</connectionStrings> 

<system.data> 
<DbProviderFactories> 
    <remove invariant="System.Data.SqlServerCe.4.0" /> 
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
</DbProviderFactories> 
</system.data> 

किसी को भी है कॉम्पैक्ट? मुझे समाधान में कहीं भी SQLEXPRESS के लिए कोई संदर्भ नहीं मिल सकता है। ,

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"/> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

आपको एक कोड पहली परियोजना कर रहे हैं उपयोग करने के लिए आप भी अपने डिफ़ॉल्ट निर्माता को बदल सकते हैं:

उत्तर

2

अपने web.config में <entityFramework> अनुभाग के लिए देखो, यह आपकी डिफ़ॉल्ट कनेक्शन कारखाना होना चाहिए अपने अन्य कनेक्शन स्ट्रिंग:

ऐसा करने के तरीके के साथ
public YourContext() : base("name=DefaultConnection") 
{ 

} 
+0

अनुभाग इस प्रकार है ...

+0

अपने defaultConnectionFactory के लिए एक मूल्य जोड़ने का प्रयास करें अपने कनेक्शन स्ट्रिंग के साथ, या अपने डिफ़ॉल्ट कन्स्ट्रक्टर को बदलें ताकि यह आपके अन्य कनेक्शन स्ट्रिंग को लक्षित कर रहा हो –

1

इस ब्लॉग पोस्ट सौदों ...

http://blogs.msdn.com/b/davidobando/archive/2013/03/13/10339621.aspx

+0

अपना उत्तर पोस्ट करने के लिए धन्यवाद! कृपया ध्यान दें कि आपको इस साइट पर, उत्तर के आवश्यक हिस्सों को पोस्ट करना चाहिए, या आपके पोस्ट जोखिमों को हटाया जाना चाहिए [एफएक्यू देखें जहां यह उन उत्तरों का उल्लेख करता है जो 'लिंक से काफी अधिक' हैं।] (Http: // stackoverflow। com/faq # हटाना) यदि आप चाहें तो लिंक अभी भी शामिल कर सकते हैं, लेकिन केवल 'संदर्भ' के रूप में। लिंक को लिंक के बिना जवाब स्वयं ही खड़ा होना चाहिए। – Taryn

3
इसके बजाय DBContext

public YourContext() : base("DefaultConnection") 
{ 

} 

से अपना कनेक्शन नाम पारित करने के लिए नाम निर्देश

public YourContext() : base("name=DefaultConnection") 
{ 

} 

यह एफई बता एक कनेक्शन के रूप पैरामीटर का उपयोग करने का उपयोग होगा निम्नलिखित का उपयोग करने का

इसके अलावा अपने कनेक्शन के शीर्ष पर "स्पष्ट" जोड़ना web.config में अनुभाग अनुभाग विरासत के मुद्दों को हल कर सकता है।

+0

ईएफ 6 के लिए यदि आप संदर्भ में 'नाम' जोड़ते हैं तो आपको एक त्रुटि मिलती है '' उस नाम से कनेक्शन नहीं मिला " – user3402754

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