2011-03-17 18 views
5

इस कोड को चलाने के बाद मुझे अपने डेटाबेस में कोई प्रविष्टि नहीं मिलती है। मुझे कोड से कोई त्रुटि नहीं मिली है।सी # एंटीटीटी फ्रेमवर्क सेव चेंज() काम नहीं कर रहा

क्या कोई जानता है कि मैं गलत क्या कर रहा हूं?

PeopleEntities1 db = new PeopleEntities1(); 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.AddToPeople(roger); 
      db.SaveChanges(true); 
+2

के दौरान किए गए परिवर्तनों को खो दिया है, और यदि आप SQL सर्वर का उपयोग कर रहे हैं, और यदि ऐसा है, क्या आप एसक्यूएल प्रोफाइलर चला सकते हैं और देख सकते हैं कि डेटाबेस के खिलाफ क्या निष्पादित किया जा रहा है? –

+1

आपके डेटाबेस का स्थान क्या है? सुनिश्चित करें कि आप इसे अपने कोड चलाने पर हर बार अपनी आउटपुट निर्देशिका में कॉपी नहीं कर रहे हैं। मुझे SQLite डेटाबेस के साथ एक समान समस्या हो सकती है जिसे हर बार जब मैं अपना एप्लिकेशन चलाता हूं, तो आउटपुट निर्देशिका में कॉपी किया गया था, जिसने मुझे पिछले रन के दौरान किए गए परिवर्तनों को खो दिया था। –

+0

यह वही है जो हो रहा है; मैं प्रोजेक्ट डीआईआर में डेटाबेस बनाता हूं, लेकिन जब यह बिन डीआईआर में फिर से डीबी फाइल बना देता है। – Roge

उत्तर

4

आपके डेटाबेस का स्थान क्या है? सुनिश्चित करें कि आप इसे अपने कोड चलाने पर हर बार अपनी आउटपुट निर्देशिका में कॉपी नहीं कर रहे हैं। मुझे SQLite डेटाबेस के साथ एक समान समस्या हो सकती है, जिसे हर बार जब मैं अपना एप्लिकेशन चलाता हूं, तो आउटपुट निर्देशिका में प्रतिलिपि बनाई गई थी, जिसने मुझे पिछले रन

+1

मिश्रित हैं, मैंने 2010 एक्सप्रेस में एक मानक सी # कंसोल एप्लिकेशन बनाया है, विज़ार्ड का इस्तेमाल एक साधारण एसक्यूएल एक्सप्रेस डीबी फाइल बनाने के लिए किया है जो प्रोजेक्ट डीआईआर में रखा जाता है, विज़ार्ड का उपयोग इकाई डेटा उत्पन्न करने के लिए किया जाता है नव निर्मित डीबी के आधार पर मॉडल, इकाई का परीक्षण करने के लिए कुछ पंक्तियां लिखीं। समस्या हर बार जब मैं एप्लिकेशन चलाता हूं तो यह डीबी फ़ाइल को दोबारा शुरू करता है, जो भी डीईआर हर बार ओवरराइटिंग में होता है और परियोजना डीआईआर – Roge

+1

में बैठे मूल डीबी फ़ाइल को पूरी तरह से अनदेखा कर रहा है तो इसका समाधान क्या है? –

1

डीबी के बजाय। AdToPeople(), db.People.Add() आज़माएं।

इसके अलावा, यह सुनिश्चित करने के लिए कि संदर्भ और कनेक्शन सही तरीके से निपटान हो, डीबी चर के चारों ओर एक उपयोग कथन लपेटें।

यह ईएफ 4 और .NET 4.0 के लिए है।

मान लें कि आपके पास लोग सेटअप नामक एक सूची है।

आशा है कि इससे मदद मिलती है! :)

यहाँ कोड है:

सभी की
using (PeopleEntities1 db = new PeopleEntities1()) 
{ 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.People.Add(roger); 
      db.SaveChanges(true); 
} 
+0

मुझे लगता है कि एक डीबी नहीं है। लोग। जोड़ें() विधि; बीटीडब्ल्यू मैंने एक डीबी से अपनी इकाई वर्ग बनाने के लिए जादूगर का उपयोग किया। – Roge

+0

ठीक है, बहुवचन के आधार पर, आपके पास db.Persons – Russell

+0

हो सकता है मेरे पास सबसे नज़दीकी चीज़ डीबी है। लोग। AddObject; यह db.AddToPeople() के समान परिणाम देता है, कोई त्रुटि नहीं चलता है लेकिन डीबी में कोई प्रविष्टि नहीं होती है। – Roge

1

पहले, SaveChanges(true) एक अप्रचलित विधि इसलिए मैंने इसे उपयोग करने की अनुशंसा नहीं होता है। क्या आपने अभी SaveChanges() का उपयोग करने की कोशिश की है? जैसा db.SaveChanges()

में SaveChanges(boolean) के सबसे करीब विधि SaveChanges(SaveOptions) है निर्दिष्ट SaveOptions साथ डेटा स्रोत के लिए सभी अपडेट बनी रहती है।

+0

हां, मैंने पैरामीटर के बिना SaveChanges() का उपयोग करने का प्रयास किया है। – Roge

+0

इसके बहिष्कृत लेकिन अभी भी समर्थित है और – BrokenGlass

+0

काम करना चाहिए आपकी मूल टिप्पणी शायद सही थी - उसे प्रोफाइलर चलाने की ज़रूरत है, और * बिल्कुल * जो डीबी के खिलाफ चल रहा है उसे देखें। मैं शर्त लगाता हूं कि उसके कनेक्शन स्ट्रिंग्स –

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