2011-02-24 10 views
8

क्या इकाई फ्रेमवर्क आपके संदर्भ पर SaveChanges को कॉल करते समय लेनदेन का उपयोग करता है? क्या लेनदेन को पूरी तरह से बंद करने का कोई तरीका है, या एक निश्चित इकाई लेनदेन से बाहर निकलने का विकल्प है?एंटीटी फ्रेमवर्क लेनदेन कैसे संभालता है?

AdventureWorksEntities db = new AdventureWorksEntities(); 

Product p1 = new Product(); 
// ... 

Product p2 = new Product(); 
// set invalid data 

db.Products.AddObject(p1); 
db.Products.AddObject(p2); 

// what happens when I call this - does it roll back everything? 
// can i tell p2 not to participate in the transaction? 
db.SaveChanges(); 

उत्तर

7

हाँ, EF4 अगर एक पहले से ही अस्तित्व में नहीं है एक नई लेन-देन का निर्माण करेगा।

http://msdn.microsoft.com/en-us/library/bb896325.aspx

देखें जब आप SaveChanges कहते हैं, अगर एक वर्तमान लेन-देन से मौजूद है, इकाई फ्रेमवर्क डेटा स्रोत के खिलाफ के संचालन के लिए इस सौदे का उपयोग करता है। अन्यथा, यह ऑपरेशन के लिए एक नया लेनदेन बनाता है। आप एंटीटी ट्रांज़ेक्शन, लेनदेन, या ट्रांज़ेक्शनस्कोप का उपयोग करके लेनदेन को परिभाषित कर सकते हैं।

नहीं, वहाँ लेन-देन से एक इकाई को मुक्त करने के कोई रास्ता नहीं है।

अपने तीसरे प्रश्न के बारे में निश्चित नहीं है - इस बारे में कि क्या आप लेनदेन को पूरी तरह से बंद कर सकते हैं, लेकिन मैं उपरोक्त अंश के आधार पर अनुमान लगा रहा हूं।

मैं जानता हूँ कि क्या यह उत्तर आप सुनना चाहते थे नहीं है, लेकिन अगर आप P2 चाहे P1 सफल होता है की परवाह किए बिना सहेजना चाहते, तो आप एक अलग वस्तु संदर्भ में P2 को बचाने के लिए की आवश्यकता होगी।

+0

कोई उत्तर न जोड़ने का प्रयास करें, इसे हटाएं और फिर एक और जोड़ें। इसके बजाय, बस अपना मूल उत्तर संपादित करें। – RPM1984

+0

नोट किया गया - धन्यवाद :) –

+0

क्या यह मूल हटाया गया उत्तर तब भी दिखाई देता है जब आप इस प्रश्न को ब्राउज़ करते हैं? –

1

लेनदेन को बंद करने के बारे में नवीनतम प्रश्न के बारे में।
कोड ब्लॉक के लिए लेनदेन को पूरी तरह से बंद करने के लिए TransactionScopeOption दबाकर ट्रांज़ेक्शनस्कोप बनाने का प्रयास करें। कुछ और जानकारी के लिए this thread पर एक नज़र डालें।

+0

मैं एक नज़र डालेगा, धन्यवाद। – Dismissile

+0

यह मदद नहीं करता है। – AGuyCalledGerald

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