2011-02-07 20 views
14

मेरे पास "RequestProperty" इकाई के साथ एक "अनुरोध" इकाई है। * * अनुरोध। तो "अनुरोध" में RequestProperty ऑब्जेक्ट्स का संग्रह है। जब मैं "अनुरोध" अपडेट करता हूं, तो मैं RequestProperty EntityCollection में सभी आइटम हटाना चाहता हूं और आने वाली डोमेन ऑब्जेक्ट से नए आइटम जोड़ना चाहता हूं। जब मैं Request.Properties संग्रह पर पुन: प्रयास करता हूं और आइटम पर एक हटा या DeleteObject पर कॉल करता हूं, तो गणना विफल हो जाती है क्योंकि संग्रह संशोधित किया गया है।इकाई फ्रेमवर्क 4 इकाई संग्रह से ऑब्जेक्ट हटाएं

अब तक मैं यह कर रहा हूँ:

while (true) 
{ 
    if (newRequest.Properties.Count > 0) 
     context.RequestPropertySet.DeleteObject(newRequest.Properties.First()); 
    else 
     break; 
} 

के बाद से यह वास्तव में नहीं है 'कूल' मैंने सोचा था कि एक और तरीका है एक रिश्ते का एक संग्रह खाली करने के लिए होना चाहिए। आपके विचारों के लिए धन्यवाद।

newRequest.Properties.Clear(); 

उत्तर

19

जवाब तरह से आप अपने संस्थाओं मॉडलिंग पर निर्भर करता है:

+0

मैं अनिवार्य रूप से उसी मॉडल संरचना का उपयोग ऑर्डर <-association-> OrderItem के रूप में सफलता के बिना करने की कोशिश कर रहा हूं। मुझे रनटाइम पर निम्न त्रुटि मिलती है: नेमस्पेस। मॉडल। ऑर्डर इटिम:: एंटीटी टाइप 'ऑर्डरइटम' की कोई कुंजी परिभाषित नहीं है। इस EntityType के लिए कुंजी परिभाषित करें। ऑर्डरइटम: एंटीटी टाइप: एंटिटीसेट 'ऑर्डर इटम्स' टाइप 'ऑर्डरइटम' पर आधारित है जिसमें कोई कुंजी परिभाषित नहीं है। मुख्य अंतर यह है कि मेरे पास ऑर्डरइटम में कोई गैर-महत्वपूर्ण गुण नहीं है। – user1003221

1

Clear() विधि का उपयोग करें। यदि आप आम स्वतंत्र संबंध या विदेशी कुंजी संबंध का उपयोग कर रहे हैं तो आपको अपने वर्तमान दृष्टिकोण का उपयोग करना होगा - मैं इसे अपने प्रोजेक्ट में भी उपयोग कर रहा हूं।

यदि आप संबंध पहचानने को परिभाषित करते हैं तो आप संग्रह पर केवल Clear को कॉल करने में सक्षम होंगे जैसा कि @ क्रैग वर्णित है। संबंध पहचानना विशेष संबंध है जहां निर्भर इकाई की प्राथमिक कुंजी में मूल इकाई की विदेशी कुंजी होती है।

Example EF model

उदाहरण Order इकाई और विदेशी कुंजी उन दोनों के बीच संबंध की पहचान करने के साथ OrderItem इकाई को दर्शाता है। OrderItem की प्राथमिक कुंजी अद्वितीय Id और OrderId शामिल है जो Order तालिका का FK है। इस कॉन्फ़िगरेशन के साथ आपको OrderItem एस के माध्यम से पुन: प्रयास करने की आवश्यकता नहीं है और प्रत्येक आइटम को अलग से हटाएं। संग्रह से OrderItem को हटाकर डेटाबेस में हटाए जाने के रूप में निष्पादित किया जाएगा और समाशोधन संग्रह डेटाबेस में सभी संबंधित OrderItem एस को हटा देगा।

+1

अनुरोधप्रोपर्टी तालिका पर विदेशी कुंजी कॉलम के रूप में काम नहीं करेगा, यह शून्य नहीं है। मुझे लगता है कि मैं इसे बदल सकता हूं और/या हटाए जाने पर एक कैस्केड सेट कर सकता हूं। – hoetz

+1

इस मामले में आपको * डिलीट, आईएमएचओ पर एक कैस्केड सेट करना चाहिए। –

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