2012-08-09 19 views
29
foreach (var item in order.MyFiles) 
{ 
    var newFile = adapter.db.File.CreateObject(); 

    newFile.Name = item.FileName; 

    adapter.db.File.AddObject(newFile); 

    adapter.db.SaveChanges(); 

    item.MyFile.Add(new MyFile { FileID = newFile.FileID }); 

    adapter.db.SaveChanges(); 
} 

foreach (var item in tempFilesList) 
{ 
    adapter.db.DeleteObject(item); 
} 

adapter.db.SaveChanges(); 

कि कोड, MyFile तालिका में पंक्तियों डुप्लिकेट असमर्थ जैसे पाश दोहराता 3 बार मैं 6 पंक्तियों (3 एक्स 2 * adapter.db.SaveChanges() ???)सी # रिश्ते की प्रिंसिपल अंत निर्धारित करने के लिए

देखते हैं लेकिन, अगर मेरे पास केवल एक adapter.db.SaveChanges(); है (वह अंतिम एक) मुझे त्रुटि मिलती है

'my_dbModel.FK_MyFile_File' रिश्ते के मूल अंत को निर्धारित करने में असमर्थ। एकाधिक जोड़े गए इकाइयों में एक ही प्राथमिक कुंजी हो सकती है।

मैं इसे के कारण होता है कि उस मामले में यह उन्हें item.MyFile.Add(new MyFile { FileID = newFile.FileID }); को assinging से पहले adapter.db.File.AddObject(newFile); आइटम वचनबद्ध नहीं होते हैं लगता है लेकिन मैं गलत हो सकता है, किसी भी विचार कैसे इसे ठीक करने के?

उत्तर

45

परिवर्तनों को सहेजने से पहले MyFile को परिभाषित करते समय आप newFile.FileID का उपयोग नहीं कर सकते। FileID डिफ़ॉल्ट (0) है जब तक आप डेटाबेस में नई इकाई को सहेज नहीं लेते। आपको MyFile कक्षा में File की नेविगेशन प्रॉपर्टी का उपयोग करना होगा। ईएफ संबंध का पता लगाएगा और डेटा को उचित तरीके से प्रतिबद्ध करेगा।

item.MyFile.Add(new MyFile { File = newFile }); 

जहां FileMyFile इकाई में परिभाषित नेविगेशन संपत्ति है:

के साथ लाइन item.MyFile.Add(new MyFile { FileID = newFile.FileID }); बदलने की कोशिश करें।

+2

आपने मेरी रात बचाई है, बहुत धन्यवाद :) – Tony

+0

मेरी समस्या भी हल हो गई! – HuckIt

3

यह आपके द्वारा एक ही तालिका में ईडीएमएक्स में चक्रीय संदर्भ के कारण हो सकता है।

उदाहरण के लिए उदाहरण यदि कर्मचारी डिपार्टमेंट वह तालिका है जिसे आप अपडेट करने जा रहे हैं और प्राथमिक कुंजी कर्मचारी डिप्टीमेंट आईडी है और यदि यह पहचान कॉलम और स्वत: जेनरेट की गई है, तो ईडीएमएक्स में जांचें कि कर्मचारी डिपार्टमेंट आईडी को वापस संदर्भित किया गया है या नहीं। यदि ऐसा है, तो उस foreigh कुंजी संदर्भ पर राइट क्लिक करें और हटाएं क्लिक करें।

यह मेरे लिए काम करता है और मुझे उम्मीद है कि यह आपके लिए भी काम करेगा।

धन्यवाद,

बिबिन।

+0

तो क्या आप कह रहे हैं कि डॉन में स्वयं संदर्भ शामिल है? –

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

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