'MyEntities' नाम का कोई कनेक्शन स्ट्रिंग एप्लिकेशन कॉन्फिगर फाइल में नहीं पाया जा सकता है


246

मैं एक एप्लिकेशन बनाने के लिए एंटिटी फ्रेमवर्क और ASP.NET MVC 4 का उपयोग कर रहा हूं

मेरा समाधान दो परियोजनाओं में विभाजित है;

  • एक क्लास लाइब्रेरी जिसमें मेरा डेटा मॉडल (.edmx) फ़ाइल और कुछ कस्टम इंटरफेस शामिल हैं
  • 'कंटेनर' एमवीसी परियोजना जो ऊपर के पुस्तकालय पुस्तकालय का संदर्भ देती है

मेरी समस्या यह है कि जब मैं 'MyEntites' DbContext का उपयोग करने का प्रयास करता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:

'MyEntities' नाम का कोई कनेक्शन स्ट्रिंग एप्लिकेशन कॉन्फिगर फाइल में नहीं पाया जा सकता है।

मुझे लगता है कि समस्या का इस तथ्य से कुछ लेना देना है कि कनेक्शन स्ट्रिंग MVC प्रोजेक्ट के बजाय क्लास लाइब्रेरी के app.config के भीतर है।

क्या किसी के पास कोई सुझाव है?


15
आपकी (ईएफ 6 के साथ स्वचालित माइग्रेशन) के समान बिल्कुल संदर्भ नहीं है, लेकिन मुझे टीएफएस पर एक बाल शाखा बनाने और उस पर काम करना शुरू करने पर इसी तरह के त्रुटि संदेश के साथ एक ही समस्या थी। Mvc प्रोजेक्ट को स्टार्ट-अप प्रोजेक्ट के रूप में चिह्नित करते हुए इसे हल किया। आउटपुट PM> Update-Database -Verbose Using StartUp project 'xxxxx.Web.Home'. Using NuGet project 'xxxxx.Web.Home.Dal'. Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Target database is: 'MovieDatabase-0.0.2' (DataSource: (LocalDb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration).
यांत्रिक वस्तु

जवाबों:


309

MVC प्रोजेक्ट में .config फ़ाइल में कनेक्शन स्ट्रिंग की प्रतिलिपि बनाने का प्रयास करें।


63
सही काम करता है, लेकिन यह जानना पसंद करेंगे कि कनेक्शन स्ट्रिंग लाने के लिए संदर्भित प्रोजेक्ट अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइल का उपयोग क्यों नहीं कर रहा है।
नल हेड

7
@ अलेक्जेंडर पुराना सवाल लेकिन हां, मैं यह भी जानना चाहूंगा कि क्यों।
केहलान क्रुममे

22
@Alexander, फ्रेमवर्क लोड हो रहा है और एक्जीक्यूटिंग असेंबली के लिए कॉन्फ़िगरेशन फ़ाइल (ओं) का उपयोग करता है। इस मामले में, यह वेब प्रोजेक्ट है। कक्षा पुस्तकालयों में आम तौर पर अपनी विन्यास फाइल नहीं होती है।
किपेरनेय

24
सक्षम करें-माइग्रेशन आदेश जब NuGet COnsole के संदर्भ में चलाया जाता है, तो स्टार्टअप प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइल को देखता है, जरूरी नहीं कि परियोजना आपको लगता है कि यह अंदर होगी। बस उस ऐप को सेट करें। जो आप स्टार्टअप बनना चाहते हैं। परियोजना। वैकल्पिक रूप से, अपने कनेक्शन स्ट्रिंग्स को एक कॉन्फ़िग फ़ाइल में संग्रहीत करें, फिर उन्हें अन्य प्रोजेक्ट्स में <connectionString configSource = "../ ProjectDir / SharedConnections.config" />
रेयान मान

3
मुझे यह सटीक त्रुटि संदेश मिला, लेकिन मेरी .config फ़ाइल - सही प्रोजेक्ट में - वास्तव में सही कनेक्शन-स्ट्रिंग सूचीबद्ध। हालाँकि, मैं परिवर्तनों का उपयोग कर रहा था, और कनेक्शन-स्ट्रिंग निश्चित रूप से परिवर्तित .config-file में संदर्भित नहीं था। तो अगर आप कॉन्फिग-फाइल ट्रांसफ़ॉर्मेशन का उपयोग कर रहे हैं, तो इसके लिए कुछ देखना होगा।
मोर्टन नोरगार्ड

143

आप सही कह रहे हैं, ऐसा इसलिए होता है क्योंकि क्लास लाइब्रेरी (जहाँ .edmx फ़ाइल) आपका स्टार्टअप / मुख्य प्रोजेक्ट नहीं है।

आपको कनेक्शन स्ट्रिंग को मुख्य प्रोजेक्ट कॉन्फ़िग फ़ाइल में कॉपी करना होगा।

अपने स्टार्टअप / मुख्य परियोजना में एक विन्यास फाइल नहीं है (जैसे कि यह मेरे कंसोल एप्लीकेशन केस में था) बस एक को जोड़ें (स्टार्टअप प्रोजेक्ट - नई आइटम जोड़ें -> एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल)।

अधिक प्रासंगिक जानकारी यहां मिल सकती है: मेटाडेटा अपवाद: निर्दिष्ट मेटाडेटा संसाधन को लोड करने में असमर्थ


8
इसका मुख्य उत्तर यह है कि क्लास लाइब्रेरी (जहाँ .edmx फ़ाइल है) आपकी STARTUP परियोजना नहीं है। मैंने महसूस किया कि मेरी स्टार्टअप परियोजना उस परियोजना के लिए सेट नहीं थी जिसमें मेरा web.config था। यह एक अलग app.config के साथ एक कंसोल ऐप था। इसलिए यदि आप अपने वेब समाधान में कंसोल एप्लिकेशन जोड़ रहे हैं, तो सुनिश्चित करें कि जब आप अपडेट-डेटाबेस चलाते हैं, तो आपका वेब प्रोजेक्ट स्टार्टअप प्रोजेक्ट है!
कार्ल

1
मैंने किसी कारण से अपनी मुख्य परियोजना को उतार दिया है और इसे पुनः लोड करने के बाद मुझे यह त्रुटि मिली है कि मैं माइग्रेशन जोड़ने की कोशिश कर रहा हूं। मुख्य प्रोजेक्ट स्टार्टअप प्रोजेक्ट बनाना फिर से समस्या को हल करता है। धन्यवाद @ ऑरेन
आजाद्रम

2
मेरा स्टार्टअप प्रोजेक्ट गलती से बदल गया था। वह कुंजी सा है। आपके उत्तर से वास्तव में मदद मिली!
Fabio Milheiro

98

सुनिश्चित करें कि आप अपना प्रोजेक्ट (DbContext के साथ) स्टार्टअप के रूप में बनाते हैं

प्रोजेक्ट पर राइट क्लिक करें और चुनें

या

उस प्रोजेक्ट में जोड़ें जो ऐप्पल में आपके कनेक्शन स्ट्रिंग के रूप में सेट है ।config (या web.config)

या

इस तरह कमांड को बुलाओ

Update-Database -Script -ProjectName '<project name>' -StartupProjectName '<project name>' -ConnectionString 'data source=.;initial catalog=<db name>;integrated security=True;MultipleActiveResultSets=True' -ConnectionProviderName 'System.Data.SqlClient'

फिर पुनः प्रयास करें


2
यह वास्तव में प्रोजेक्ट है जिसमें कनेक्शन स्ट्रिंग को स्टार्टअप प्रोजेक्ट के रूप में सेट किया जाना चाहिए, और आमतौर पर यह प्रोजेक्ट नहीं है कि आपकी DbContext फ़ाइल बैठता है
रेमंड वैंग

1
... इस प्रकार, यह सुनिश्चित करने के अलावा कि पैकेज Mgr सही परत को लक्षित करता है, उसी परत को Set as Startup Projectऊपर दिखाए गए स्क्रीनशॉट के अनुसार - होना चाहिए । (भले ही आप F5 को हिट करें, आप क्लास लाइब्रेरी शुरू नहीं कर पाएंगे)
bkwdesign

3
इससे मेरी जान बच गई। पैकेज मैनेजर में भले ही मेरे पास प्रोजेक्ट के लिए डिफ़ॉल्ट प्रोजेक्ट सेट था जहां संदर्भ सेट किया गया था, फिर भी यह ओवरराइड नहीं हुआ।
गार्फ्रेडाज़

1
"लेकिन यह कल काम किया! सटीक एक ही आदेश !" => यह!
सिमोन_विवर

1
सबसे आसान तरीका =)
एलेक्जेंडर

29

आप बस कनेक्शन स्ट्रिंग पास कर सकते हैं EntityFrameworkऔर अपने जीवन के साथ प्राप्त कर सकते हैं:

public partial class UtilityContext : DbContext
{
    static UtilityContext()
    {
        Database.SetInitializer<UtilityContext>(null);
    }

    public UtilityContext()
        : base("Data Source=SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;MultipleActiveResultSets=True")
    {
    }

    // DbSet, OnModelCreating, etc...
}

और मेरे दिन के रूप में अच्छी तरह से क्योंकि मैं अपने स्टार्टअप परियोजना अचानक विन्यास फाइल खोजने बंद कर दिया क्यों एक समाधान नहीं मिल सकता है। मेरा app.config और <appname> .exe.config मेरे स्टार्टअप प्रोजेक्ट बिन में दिखाई दे रहा था और अभी तक EntityFramework कनेक्शन स्ट्रिंग नहीं पा सका है जो मैं हमेशा से उपयोग कर रहा था। मैंने हाल ही में समाधान से कई अप्रयुक्त परियोजनाओं को हटा दिया था और मुझे आश्चर्य हो रहा है कि क्या इसके साथ कुछ करना था। मैंने समाधान से एक वेब परियोजना को हटा दिया। आश्चर्य है कि अगर मेरे अन्य प्रोजेक्ट web.config पर निर्भर थे या ऐसा कुछ असामान्य था।
ग्रेवार्फ

रनिंग प्रोजेक्ट का कॉन्फ़िगरेशन अन्य सभी चाइल्ड प्रोजेक्ट द्वारा उपयोग किया जाता है।
सर्ज सगन

1
लेकिन प्रदाता का नाम कैसे सेट करें?
FizxMike

9

जैसा कि आप अनुमान लगाते हैं, यह कनेक्शन स्ट्रिंग को क्लास लाइब्रेरी के app.config में होना है।

कंटेनर app.configया web.configफ़ाइल में वर्ग app.config से प्रवेश की प्रतिलिपि बनाएँ


8

यदि आपके पास समाधान में कई परियोजनाएं हैं, तो प्रोजेक्ट सेट करें जैसा कि आपके पास अपना सत्य है। App.config।


7

कनेक्शन स्ट्रिंग app.configया web.configउस प्रोजेक्ट में फ़ाइल करें जो " StartUpप्रोजेक्ट के रूप में सेट करें" पर सेट हो और अगर डेटा लेयर प्रोजेक्ट में एंटिटी फ्रेमवर्क का उपयोग करने के मामले में - कृपया मुख्य प्रोजेक्ट में एंटिटी फ्रेमवर्क को स्थापित करें ।


4

यह तब भी होता है जब स्टार्टअप प्रोजेक्ट को बदल दिया जाता है, जिसमें कनेक्शन स्ट्रिंग्स नहीं होता है ।

  1. राइट क्लिक समाधान - गुण क्लिक करें
  2. सामान्य गुणों के तहत, स्टार्टअप प्रोजेक्ट का चयन करें
  3. दाएँ फलक पर उस प्रोजेक्ट का चयन करें जिसमें कनेक्शन स्ट्रिंग्स हैं (ज्यादातर मामलों में, यह एमवीसी परियोजनाएं होंगी - परियोजना जो समाधान प्रदान करती है)

हाँ यह काम करता है। मैंने ईबी के लिए डीबी के साथ संवाद करने के लिए एक क्लास लाइब्रेरी बनाई है और वही समस्या हो रही है।
सतिंदर सिद्धू

4
  1. एक App.Config फ़ाइल जोड़ें
  2. प्रोजेक्ट को स्टार्टअप प्रोजेक्ट के रूप में सेट करें।
  3. सुनिश्चित करें कि आप entityFrameworkअनुभाग के बाद कनेक्शन तार जोड़ते हैं :

    <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    
    </configSections>
    
    <connectionStrings>
       <!-- your connection string goes here, after configSection -->
    </connectionString>

3

हाँ, यह मूर्खतापूर्ण है। आप कनेक्शन बिल्डर का उपयोग करके कनेक्शन स्ट्रिंग की प्रतिलिपि बनाने से बच सकते हैं। VB.Net कोड (उत्पादन में उपयोग किया जाता है, लेकिन यहां थोड़ा संशोधित किया गया है, इसलिए किसी भी मुद्दे के साथ सहायता करने के लिए अप्रशिक्षित, खुश रहें), जहां मेरे पास एक सर्वरनाम चर, एक डेटाबेस नाम है, मैं उन्हें एक विधि में पास करता हूं और यह कनेक्शन उत्पन्न करता है। मेरे लिए:

    Dim EfBuilder As New System.Data.EntityClient.EntityConnectionStringBuilder("metadata=res://*/VMware.VmEf.csdl|res://*/VMware.VmEf.ssdl|res://*/VMware.VmEf.msl;provider=System.Data.SqlClient;provider connection string=""data source=none;initial catalog=none;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""")
   Dim SqlBuilder As New Data.SqlClient.SqlConnectionStringBuilder(EfBuilder.ProviderConnectionString)
                        SqlBuilder.DataSource = serverName
                        SqlBuilder.InitialCatalog = databaseName
                        EfBuilder.ProviderConnectionString = SqlBuilder.ConnectionString
                        Using vmCtx As New VmEfConn(EfBuilder.ConnectionString)

2

क्या आप अपने समाधान पर एक से अधिक प्रोजेक्ट का उपयोग कर रहे हैं?

क्योंकि अगर आप हैं, तो आपको जिस वेब कॉन्फिग को चेक करना चाहिए, वह उसी प्रोजेक्ट पर de .edmx फ़ाइल के रूप में है


हाँ, यह मामला है। प्रोजेक्ट जिसमें कनेक्शन स्ट्रिंग है वह एक क्लास लाइब्रेरी है जिसमें केवल एक App.config फ़ाइल शामिल है। MVC प्रोजेक्ट इस थियो की जाँच नहीं करता है।
jjc99

विकास के दौरान यह केवल app.config को अपने प्रोजेक्ट में शामिल करेगा, आपको वहां जोड़ना होगा
डिएगो

आप उत्तर के लिए धन्यवाद। मैंने edmx फ़ाइल वाले प्रोजेक्ट से कनेक्शन स्ट्रिंग की प्रतिलिपि बनाने और इसे अपने mVC प्रोजेक्ट में रूट web.config फ़ाइल में रखने की कोशिश की है। दुर्भाग्य से, यह अभी भी कनेक्शन स्ट्रिंग नहीं पा सकता है। क्या मुझे किसी भी तरह से कनेक्शन स्ट्रिंग को संशोधित करना है?
jjc99

यह दूसरा तरीका है। देव समय में आपको .edmx फ़ाइल वाले प्रोजेक्ट पर app.cofnig पर con string की आवश्यकता होती है। यदि आपके पास यह है तो नाम गलत है। कनेक्शन स्ट्रिंग का नाम आपकी .edmx फ़ाइल की "एंट्री कंट्रा नाम" संपत्ति के समान नाम होना चाहिए
डिएगो

1

MVC प्रोजेक्ट Web.config फ़ाइल में ConnectionString जोड़ें


1

जब मैं कई प्रॉएक्ट्स का उपयोग करता हूं, तो मुझे यह समस्या होती है। EntityFramework प्रोजेक्ट के लिए web.config और app.config के साथ प्रॉजेक्ट शुरू करें।

इस समस्या से बचने के लिए आपको चाहिए:

  1. आपको प्रारंभ * .config फ़ाइल में कनेक्शन स्ट्रिंग की आवश्यकता है।
  2. आपको अपने संदर्भों में EntityFramework DLL स्थापित करने की आवश्यकता है

1

मैंने उसी मुद्दे का सामना किया है। मैं स्टार्टअप प्रोजेक्ट से कनेक्शन स्ट्रिंग लगाने से चूक गया क्योंकि मैं अन्य लेयर से डेटा एक्सेस ऑपरेशन कर रहा हूं। यह भी यदि आपके पास अपने स्टार्टअप प्रोजेक्ट में app.config नहीं है, तो app.config फ़ाइल जोड़ें और फिर उस कॉन्फ़िग फ़ाइल में एक कनेक्शन स्ट्रिंग जोड़ें।


1
धन्यवाद, मुझे अपने प्रोजेक्ट लोड करने में समस्या हुई और इसने "स्टार्टअप प्रोजेक्ट" खो दिया। आपके उत्तर ने मुझे यह सुनिश्चित करने के लिए याद दिलाया कि परियोजना को संदर्भ फ़ाइल और app.config के साथ शुरू करना था।
मस्तूलो

1

स्टार्टअप के रूप में प्रोजेक्ट सेट नहीं होने से मुझे यह मिला, जैसा कि एक अन्य उत्तर से संकेत मिलता है। इसके लिए मेरा योगदान - जब ऐड-माइग्रेशन और अपडेट-डेटाबेस करते हैं, तो स्टार्टअप प्रोजेक्ट को Nuget Package Manager कंसोल में कमांड के भाग के रूप में निर्दिष्ट करें ('[' या '] वर्णों को शामिल न करें), यह सिर्फ आपको दिखाने के लिए है कि आप अपने प्रोजेक्ट नाम के लिए वहां स्थित पाठ को बदलने की आवश्यकता है):

  1. सक्षम करें-माइग्रेशन
  2. Add-Migrations -StartupProject [आपके प्रोजेक्ट का नाम जिसमें डेटा संदर्भ वर्ग है]
  3. अद्यतन-डेटाबेस -StartupProject [ऊपर के रूप में एक ही परियोजना का नाम]

इससे हो जाना चाहिए।


इस तरह आप अपनी प्रक्रियाओं में आदेशों को शामिल कर सकते हैं और स्टार्टअप प्रोजेक्ट को लगातार डिफ़ॉल्ट से दूर नहीं करना है।
जेकज

1

ऐसा इसलिए है क्योंकि आपके संदर्भ वर्ग को DbContext से विरासत में मिला है। मुझे लगता है कि आपका ctor इस तरह है:

public MyEntities()
    : base("name=MyEntities")

name=... आपके कनेक्शन के नाम में बदला जाना चाहिए


0

.Edmx फ़ाइल वाली परियोजना द्वारा उत्पन्न कनेक्शन स्ट्रिंग कनेक्शन स्ट्रिंग उत्पन्न करता है, यह app.config प्रकार की फाइलों से एक होल्डओवर प्रतीत होता है, जिन्हें आउटपुट निर्देशिका में कॉपी किया गया था और रनटाइम जानकारी स्टोर करने के लिए निष्पादन योग्य द्वारा संदर्भित किया गया था।

यह वेब परियोजना में टूट जाता है क्योंकि वेब परियोजना के लिए web.config फ़ाइल में यादृच्छिक .config जानकारी जोड़ने के लिए कोई स्वचालित प्रक्रिया नहीं है।

सबसे आसान है कनेक्शन स्ट्रिंग को कॉन्फिग फाइल से web.config फाइल के कनेक्शन सेक्शन में कॉपी करना और कॉन्फिगरेशन कंटेंट को अनसुना करना।


0

सबसे अच्छा तरीका है कि मैं इसे संबोधित करने के लिए अस्थायी रूप से उस परियोजना को (सबसे अधिक संभावना एक पुस्तकालय पुस्तकालय) स्टार्टअप परियोजना के लिए निर्धारित किया है। यह पैकेज प्रबंधक कंसोल को उस प्रोजेक्ट का उपयोग करने के लिए मजबूर करता है क्योंकि यह कॉन्फ़िगर स्रोत है। जिस कारण से इसे इस तरह से सेट किया गया है, उसका कारण यह है कि टॉप डाउन मॉडल की वजह से वें econfig फाइलें आमतौर पर अनुसरण करती हैं। अंगूठे का नियम यह है कि परियोजना जो क्लाइंट के सबसे करीब है (उदाहरण के लिए MVC एप्लिकेशन) web.config या app.config है जिसका उपयोग किया जाएगा।


0

सुनिश्चित करें कि आपने स्टार्टअप प्रोजेक्ट के ROOT web.config में कनेक्शन स्ट्रिंग रखा है।

मुझे पता है कि मैं यहाँ स्पष्ट कह रहा हूँ, लेकिन यह मेरे साथ भी हुआ है - हालाँकि मैंने पहले ही अपने MVC प्रोजेक्ट के Web.Config (एक .edmx फ़ाइल को एक अलग, क्लास लाइब्रेरी प्रोजेक्ट में रखा था) में कनेक्शन स्ट्रिंग HAD किया था और मैं नहीं कर रहा था। 'यह पता लगाना कि मुझे अपवाद क्यों मिल रहा है ... लंबी कहानी छोटी, मैंने कनेक्शन स्ट्रिंग को कॉपी किया था Views \ Web.Config में गलती से, थकावट के अजीब संयोजन में और स्क्रॉल-टू-द-बॉटम-टू-द-बॉटम -समाधान-एक्सप्लोरर परिदृश्य। हाँ, ये बातें अनुभवी डेवलपर्स के साथ भी होती हैं :)


0

यह समस्या तब होती है जब आप अपने प्रोजेक्ट में लेयर्स का उपयोग कर रहे होते हैं और DataLayer में Entity फ्रेम वर्क को परिभाषित या स्थापित करते हैं और अपने प्रोजेक्ट को चलाने का प्रयास करते हैं

तो इस समस्या से उबरने के लिए, जहां स्ट्रिंग एडम्क्स फ़ाइल है वहां से कनेक्शन स्ट्रिंग को कॉपी करें और कनेक्शन स्ट्रिंग को मुख्य web.config में पेस्ट करें।


0

'' कंटेनर 'MVC प्रोजेक्ट की रूट web.config फ़ाइल में एक कनेक्शन स्ट्रिंग जोड़ें जो निम्न के रूप में क्लास लाइब्रेरी का संदर्भ देता है:

 <connectionStrings>

  <add name="MyEntities" connectionString="complete connection string here" providerName="System.Data.SqlClient" />

  </connectionStrings>

यदि आप कनेक्शन के नाम के रूप में "MyEntities" का उपयोग नहीं करना चाहते हैं तो इसे अपनी इच्छानुसार बदल दें लेकिन अपने MyEntities DbContext वर्ग में निम्नलिखित परिवर्तन करें:

MyEntities: DbContext
 {
   public MyEntities():base("Name-Of-connection-string-you wish to connect"){ }
 }

इस त्रुटि का कारण है, यदि हम DbConext के व्युत्पन्न वर्ग में कनेक्शन स्ट्रिंग या कनेक्ट स्ट्रिंग का नाम निर्दिष्ट नहीं करेंगे (आपके मामले में यह MyEntities है) तो DbContext स्वचालित रूप से रूट वेब में एक कनेक्शन स्ट्रिंग की खोज करेगा। व्युत्पन्न वर्ग नाम के समान (आपके मामले में यह मेरी संस्थाएं हैं)।


0

MSTest चलाते समय मुझे यह समस्या थी। मुझे "नोइज़ोलेशन" झंडे के बिना काम करने के लिए नहीं मिला।

उम्मीद है कि यह किसी की मदद करता है। मुझे यह पता लगाने में बहुत समय लगता है। सब कुछ IDE से ठीक चला। इस संदर्भ में एंटिटी फ्रेमवर्क के बारे में कुछ अजीब है।


0

नियमित रूप से पलायन

दो विकल्प हैं - पहला जो कि यहां सभी ने सुझाया है, यह सुनिश्चित करना है कि कनेक्शन स्ट्रिंग प्रोजेक्ट के Web.config फ़ाइल में है। जब एज़्योर एप्लिकेशन सेटिंग्स से कनेक्शन स्ट्रिंग्स के साथ काम कर रहा है, तो इसका मतलब है कि एज़्योर मूल्यों के साथ अपने वेब.कॉन्फ़िग मूल्यों को अधिलेखित करना।

Azure या स्वचालित माइग्रेशन (प्रोग्रामेटिक)

यदि आप माइग्रेशन प्रोग्राम चला रहे हैं, तो दूसरा विकल्प उपलब्ध है, जो आपको Web.config में स्टोर किए बिना एक कनेक्शन स्ट्रिंग का उपयोग करके गतिशील रूप से (या एज़्योर एप्लिकेशन सेटिंग्स के माध्यम से) माइग्रेशन चलाने की अनुमति देता है:

विन्यास के सेट करते समय TargetDatabase , का उपयोग DbConnectionInfo निर्माता है कि एक कनेक्शन स्ट्रिंग और एक प्रदाता नाम के बजाय निर्माता है कि सिर्फ एक कनेक्शन का नाम लेता है लेता है। यदि आपके कनेक्शन स्ट्रिंग में प्रदाता का नाम नहीं है और आप SQL Server / Azure SQL का उपयोग कर रहे हैं तो "System.Data.SqlClient" का उपयोग करें


0

यह कॉलिंग कोड में संदर्भित पर्याप्त dll संदर्भ नहीं होने के कारण भी हो सकता है। एक छोटी सी अनाड़ी हैक आपके दिन को बचा सकती थी।

मैं DB फर्स्ट एप्रोच का पालन कर रहा था और DAL क्लास लाइब्रेरी प्रोजेक्ट में EDMX फाइल बनाई थी, और यह BAL क्लास लाइब्रेरी के संदर्भ में थी, जिसे बदले में WCF सेवा द्वारा संदर्भित किया गया था।

चूंकि मुझे BAL में यह त्रुटि मिल रही थी, इसलिए मैंने DAL परियोजना के App.config से कॉन्फिगर विवरण की प्रतिलिपि बनाने के लिए उपर्युक्त विधि की कोशिश की थी, लेकिन हल नहीं हुआ। अंत में एक दोस्त की नोक के साथ मैंने सिर्फ WCF प्रोजेक्ट (प्रासंगिक DB कनेक्टिविटी आदि के साथ) में एक डमी EDMX फ़ाइल जोड़ी है, इसलिए इसने सभी आवश्यक चीजों को आयात किया, और फिर मैंने बस EDMX फाइल को हटा दिया, और इसे इस मुद्दे से छुटकारा मिल गया। एक साफ निर्माण।


0

@RyanMann के शीर्ष उत्तर पर एक टिप्पणी है जो बताती है:

अपने कनेक्शन स्ट्रिंग्स को एक कॉन्फ़िग फ़ाइल में संग्रहीत करें, फिर उन्हें अन्य प्रोजेक्ट्स में देखें <connectionString configSource="../ProjectDir/SharedConnections.config" />

यह एक शानदार सुझाव है!

यह App.config और Web.config फ़ाइलों के बीच कनेक्शन स्ट्रिंग्स को साझा करने के लिए भी काम करता है!

जो कोई भी इस सुझाव का पालन करना चाहता है, उसे इस एसओ के जवाब को सौंप देना चाहिए । यह एक समाधान में कई परियोजनाओं के बीच कनेक्शन तार साझा करने पर एक बहुत अच्छा कदम-दर-चरण गाइड है।

एकमात्र चेतावनी यह है कि configSourceएक ही निर्देशिका या एक उप-निर्देशिका में मौजूद होना चाहिए। ऊपर दिए गए लिंक में बताया गया है कि इसको पाने के लिए "Add as Link" का उपयोग कैसे करें।


0

ऑटोकैड प्लगइन के भीतर ईएफ का उपयोग करने का प्रयास करते समय मुझे यह त्रुटि हुई थी। CAD प्लगइन्स को acad.exe.config फ़ाइल से कनेक्शन स्ट्रिंग मिलती है। जैसा कि acad config फाइल में ऊपर बताया गया है, उससे कनेक्ट स्ट्रिंग जोड़ें और यह काम करता है।

क्रेडिट ADN.Network से नॉर्मन को जाता है।


0

यदि आप एक MVVM मॉडल का उपयोग कर रहे हैं, तो अपने प्रोजेक्ट के सभी भागों में कनेक्शन स्ट्रिंग्स को कॉपी करने का प्रयास करें।

उदाहरण के लिए, यदि आपके समाधान में दो प्रोजेक्ट हैं, तो क्लास लाइब्रेरी प्रोजेक्ट और wpf प्रोजेक्ट, आपको बैकेंड प्रोजेक्ट के कनेक्शन स्ट्रिंग्स (लाइब्रेरी क्लास पोरजे) को कॉपी करना होगा और wpf प्रोजेक्ट के App.config फ़ाइल में एक कॉपी रखनी होगी।

<connectionStrings>
  <add name="DBEntities" ... />
</connectionStrings>

आशा है कि यह आपके लिए उपयोगी है :)


-2

Web.config फ़ाइल में Connectoinstrnig जोड़ें

<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too"  ></ConnectionStiring>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.