2010-08-12 8 views
9

LINQ-to-SQL में यदि मैं संदर्भ में किसी ऑब्जेक्ट को अपडेट करता हूं लेकिन सबमिटChanges नहीं कहा जाता है, तो क्या उस अद्यतन को "पूर्ववत करें" या त्यागने का कोई तरीका है ताकि जब मैं अंततः सबमिटChanges को कॉल करता हूं तो परिवर्तन सबमिट नहीं किए जाएंगे? उदाहरण के लिए, यदि मैंने कई ऑब्जेक्ट्स अपडेट किए हैं और फिर निर्णय लेते हैं कि मैं सबमिट करने से पहले उनमें से किसी एक में बदलावों को त्यागना चाहता हूं।क्या मैं LINQ से SQL अद्यतन को "पूर्ववत" कर सकता हूं?

भाग 2:

_dbContext.Refresh(RefreshMode.OverwriteCurrentValues, yourObj); 

एक: इकाई की रूपरेखा के लिए एक ही सवाल है, v3.5

+0

http://stackoverflow.com/questions/259219/how-can-i-reject-all-changes-in-a-linq-to-sqls-datacontext – relet

+0

के संभावित डुप्लिकेट नहीं, यह लेख के बारे में कैसे करने के लिए है सभी परिवर्तन पूर्ववत करें। मैं बस उनमें से कुछ को त्यागना चाहता हूं। – Sisiutl

उत्तर

2

एसक्यूएल करने के लिए दोनों LINQ और इकाई की रूपरेखा ही कॉल (यह मानते हुए आप अभी भी सक्रिय प्रसंग है) का उपयोग करेगा संदर्भ का एक इकाई के रूप में संदर्भ का इलाज करने का अधिक उचित तरीका होगा, इस स्थिति में जब आप ऑब्जेक्ट को रीफ्रेश करते समय सक्रिय संदर्भ नहीं रखेंगे। आप बस उस ऑब्जेक्ट का निपटान करेंगे जिसका आप वर्तमान में उपयोग कर रहे हैं और एक नए संदर्भ से ताजा प्रति प्राप्त करें।

1

मुझे लगता है कि आप मूल मूल्यों को पुनर्प्राप्त करने के लिए .GetOriginalEntityState (yourEntity) का उपयोग कर सकते हैं। फिर मूल

dim db as new yourDataContext 
//get entity 
dim e1 as yourEntity = (from x in db.table1).take(1) 
//update entity 
e1.someProperty = 'New Value' 
//get original entity 
dim originalEntity = db.table1.getOrignalEntityState(e1) 
e1 = originalEntity 
db.submitChanges() 

बहुत छद्म कोड के लिए वापस अपने अद्यतन इकाई की स्थापना की लेकिन मैं इसे सही विचार बता देते हैं लगता है। इस विधि का उपयोग करके, आप पूरी इकाई को रीफ्रेश किए बिना एक या अधिक संपत्ति परिवर्तनों को पूर्ववत भी कर सकते हैं।

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