एंटिटी फ्रेमवर्क में .Remove() और .DeleteObject() तरीकों के बीच अंतर की विस्तृत व्याख्या
एंटिटी फ्रेमवर्क में, डेटाबेस से आइटम हटाने के लिए दो विकल्प हैं: .Remove() और .DeleteObject()। हालाँकि दोनों विधियाँ डेटाबेस संचालन को लक्षित करती हैं, सूक्ष्म अंतर उनके लागू परिदृश्यों को निर्धारित करते हैं।
ObjectContext.DeleteObject()
ObjectContext.DeleteObject() संदर्भ में हटाने के लिए इकाई को चिह्नित करता है। यह ऑपरेशन इकाई के EntityState को हटाए गए पर सेट करता है। SaveChanges को कॉल करने के बाद, EF डेटाबेस में SQL DELETE स्टेटमेंट भेजता है। हालाँकि, यदि किसी संदर्भ बाधा का उल्लंघन किया जाता है, तो विलोपन को रोकते हुए एक अपवाद फेंक दिया जाएगा।
EntityCollection.Remove()
EntityCollection.Remove() मूल इकाई और चाइल्ड इकाई के बीच संबंध को हटाए गए के रूप में चिह्नित करता है। यह ऑपरेशन स्वयं डेटाबेस से चाइल्ड इकाई को सीधे नहीं हटाता है। अंतर्निहित संबंध के आधार पर, विभिन्न स्थितियाँ घटित होंगी:
वापसी मूल्य और उपयोग
.Remove() एक बूलियन मान लौटाता है जो सफलता दर्शाता है, जबकि .DeleteObject() void प्रकार का होता है। अनिवार्य रूप से, .Remove() रिश्तों को संशोधित करता है, जबकि .DeleteObject() सीधे संस्थाओं पर काम करता है।
इसलिए यदि आप सीधे डेटाबेस से संस्थाओं को हटाने की योजना बना रहे हैं, तो .DeleteObject() का उपयोग करें। हालाँकि, यदि आप चाइल्ड इकाइयों को हटाए बिना इकाइयों के बीच संबंधों को संशोधित करना चाहते हैं, तो .Remove() को प्राथमिकता दी जाती है।
कृपया ध्यान दें कि .Remove() विधि पर MSDN नोट्स अनुभाग संदर्भात्मक अखंडता बाधाओं के बारे में कुछ अस्पष्ट है। हालाँकि सभी तीन संबंध प्रकारों में बाधाएँ हैं, बाल इकाइयाँ वास्तव में केवल तभी हटाई जाती हैं जब संबंध की पहचान की जाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3