मैं कोड पहले दृष्टिकोण के साथ एमवीसी 3 का उपयोग कर रहा हूं। इस मामले में, मुझे मौजूदा डेटाबेस से अपनी इकाई वर्ग उत्पन्न करना पड़ा।

डेटाबेस था

डेटाबेस1.mdf

एक बार जब मैंने ऐसा किया, तो इसने DBEntities बनाया और मेरे Web.config में एक नया कनेक्शनस्ट्रिंग जोड़ा जो कुछ इस तरह दिखता था:

<add name="DATABASE1Entities" connectionString="metadata=res://*/Models.Task.csdl|res://*/Models.Task.ssdl|res://*/Models.Task.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\DATABASE1.MDF;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

अब मैंने डीबी इकाइयों को हटा दिया और अपनी डीबी संदर्भ कक्षा के साथ आया।

तथा

अब, मैं निम्नलिखित कनेक्शनस्ट्रिंग के साथ काम कर रहा हूं:

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|DATABASE1.mdf;User Instance=true" providerName="System.Data.SqlClient" />

मेरे डीबीकॉन्टेक्स्ट क्लास का नाम टास्ककॉन्टेक्स्ट है।

मुझे यकीन नहीं है कि इसके बाद क्या हुआ। मेरा कोड काम करता है। लेकिन यह कुछ खाली डेटाबेस पर काम करता है और यह डेटाबेस.mdf में किसी भी डेटा को प्रतिबिंबित नहीं करता है। अगर मैं अपने कंट्रोलर का उपयोग करके कुछ जोड़ता हूं तो मैं देखता हूं कि वह चीज जुड़ गई है। लेकिन यह Databse1.mdf में परिलक्षित नहीं होता है।

ऐसा लगता है कि उसने अपना खुद का डेटाबेस बनाया है। लेकिन मुझे कहीं भी एंडी .sdf या .mdf फ़ाइल नहीं दिखाई दे रही है.... मुझे नहीं पता कि क्या हो रहा है?

2
Lost 10 सितंबर 2011, 22:12
नमस्ते मैंने अभी देखा है कि ईडीएमएक्स फ़ाइल में डेटाबेस 1 मॉडल.स्टोर जैसा कुछ है। मुझे संदेह है, अगर इसका मेरी समस्या से कोई लेना-देना है?
 – 
Lost
10 सितंबर 2011, 23:40
तो, आपने बताया कि आपका कोड काम करता है। क्या आप कह रहे हैं कि यदि आप अपने आवेदन के माध्यम से कुछ जोड़ते हैं, तो यह डीबी में जुड़ जाता है और आप बाद में डीबी से इस जानकारी को पुनः प्राप्त कर सकते हैं?
 – 
itsmatt
11 सितंबर 2011, 01:40

2 जवाब

सबसे बढ़िया उत्तर

अपनी कनेक्शन स्ट्रिंग का नाम TaskContext के समान बनाएं:

<add name="TaskContext" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|DATABASE1.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" />

या, आप इन चरणों का पालन करके अपने पसंदीदा connectionStringName का उपयोग कर सकते हैं:

1- जब आप कोई TaskContext ऑब्जेक्ट बना रहे होते हैं, तो उसका कनेक्शनस्ट्रिंग बदल जाता है:

var cn = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
// or
var cn = WebConfigurationManager.ConnectionStrings[0].ConnectionString; // use your connection index instead of 0
var _context = new TaskContext();
_context.Database.Connection.ConnectionString = cn;

2- अपने संदर्भ वर्ग (TaskContext) में, आपको modelBuilder को बताना चाहिए कि हटाएं IncludeMetadataConvention इस कोड द्वारा:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    base.OnModelCreating(modelBuilder);
}
2
amiry jd 12 जून 2017, 08:17

अपनी कनेक्शन स्ट्रिंग और DBContext का नाम समान बनाने का प्रयास करें। मेरा मानना ​​​​है कि किसी बिंदु पर पढ़ना है कि ईएफ कोड पहले बहुत सारे सम्मेलनों को नियोजित करता है, इसलिए यदि उसे डीबी संदर्भ (आपके मामले में "टास्ककॉन्टेक्स्ट") नामक कनेक्शन स्ट्रिंग नहीं मिलती है तो यह SQLExpress से कनेक्ट करने का प्रयास करेगा (चाहे या नहीं) एक स्थापित है) और डेटाबेस को खोजने या बनाने का प्रयास करेगा।

मुझे लगता है कि आपको SQLExpress स्थापित हो गया है। C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\ में क्या कमी है? (मुझे लगता है कि यही रास्ता है) क्या आपके पास इस परियोजना के लिए एक डीबी बैठा है? शायद कुछ ऐसा [YourNamespace].TaskContext.dbf?

2
itsmatt 11 सितंबर 2011, 02:19
आप सही कह रहे हैं, आपने जिस स्थान का उल्लेख किया है उस स्थान पर उस .MDf फ़ाइल को रहस्यमय ढंग से जोड़ा है। मुझे परियोजना को फिर से बनाना पड़ा। अब यह काम कर रहा है।
 – 
Lost
11 सितंबर 2011, 04:02