"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एंटिटी फ्रेमवर्क: रिमूव() बनाम डिलीटऑब्जेक्ट(): प्रत्येक विधि का उपयोग कब करें?

एंटिटी फ्रेमवर्क: रिमूव() बनाम डिलीटऑब्जेक्ट(): प्रत्येक विधि का उपयोग कब करें?

2025-01-20 को प्रकाशित
ब्राउज़ करें:416

Entity Framework: Remove() vs. DeleteObject(): When to Use Each Method?

एंटिटी फ्रेमवर्क में .Remove() और .DeleteObject() तरीकों के बीच अंतर की विस्तृत व्याख्या

एंटिटी फ्रेमवर्क में, डेटाबेस से आइटम हटाने के लिए दो विकल्प हैं: .Remove() और .DeleteObject()। हालाँकि दोनों विधियाँ डेटाबेस संचालन को लक्षित करती हैं, सूक्ष्म अंतर उनके लागू परिदृश्यों को निर्धारित करते हैं।

ObjectContext.DeleteObject()

ObjectContext.DeleteObject() संदर्भ में हटाने के लिए इकाई को चिह्नित करता है। यह ऑपरेशन इकाई के EntityState को हटाए गए पर सेट करता है। SaveChanges को कॉल करने के बाद, EF डेटाबेस में SQL DELETE स्टेटमेंट भेजता है। हालाँकि, यदि किसी संदर्भ बाधा का उल्लंघन किया जाता है, तो विलोपन को रोकते हुए एक अपवाद फेंक दिया जाएगा।

EntityCollection.Remove()

EntityCollection.Remove() मूल इकाई और चाइल्ड इकाई के बीच संबंध को हटाए गए के रूप में चिह्नित करता है। यह ऑपरेशन स्वयं डेटाबेस से चाइल्ड इकाई को सीधे नहीं हटाता है। अंतर्निहित संबंध के आधार पर, विभिन्न स्थितियाँ घटित होंगी:

  • वैकल्पिक संबंध: विदेशी कुंजी NULL पर सेट है, SaveChanges तदनुसार डेटाबेस को अपडेट करेगा।
  • आवश्यक गैर-पहचान वाला संबंध: आपको बच्चे को नए माता-पिता से जोड़ना होगा या DeleteObject() का उपयोग करके इसे स्पष्ट रूप से हटाना होगा। अन्यथा, संदर्भ बाधा टकराव उत्पन्न होगा।
  • संबंध की पहचान करता है: चाइल्ड इकाई को हटाने के लिए भी चिह्नित किया जाता है, जो SaveChanges के दौरान SQL DELETE स्टेटमेंट को ट्रिगर करता है।

वापसी मूल्य और उपयोग

.Remove() एक बूलियन मान लौटाता है जो सफलता दर्शाता है, जबकि .DeleteObject() void प्रकार का होता है। अनिवार्य रूप से, .Remove() रिश्तों को संशोधित करता है, जबकि .DeleteObject() सीधे संस्थाओं पर काम करता है।

इसलिए यदि आप सीधे डेटाबेस से संस्थाओं को हटाने की योजना बना रहे हैं, तो .DeleteObject() का उपयोग करें। हालाँकि, यदि आप चाइल्ड इकाइयों को हटाए बिना इकाइयों के बीच संबंधों को संशोधित करना चाहते हैं, तो .Remove() को प्राथमिकता दी जाती है।

कृपया ध्यान दें कि .Remove() विधि पर MSDN नोट्स अनुभाग संदर्भात्मक अखंडता बाधाओं के बारे में कुछ अस्पष्ट है। हालाँकि सभी तीन संबंध प्रकारों में बाधाएँ हैं, बाल इकाइयाँ वास्तव में केवल तभी हटाई जाती हैं जब संबंध की पहचान की जाती है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3