2010-04-07 4 views
5

मान लीजिए कि मेरे डेटाबेस में ऑर्डर तालिका है और VS2008 "लिंक से SQL क्लासेस" डिज़ाइनर द्वारा उत्पन्न एक इसी मॉडल क्लास है। मान लीजिए कि मेरे डेटाबेस में एक संग्रहीत प्रक्रिया (ProcessOrder) भी है जो मैं ऑर्डर रिकॉर्ड पर कुछ प्रोसेसिंग करने के लिए उपयोग करता हूं।डेटाबेस रिकॉर्ड की अपनी स्थानीय प्रतिलिपि को रीफ्रेश करने के लिए मैं लिंक-टू-एसक्यूएल कैसे प्राप्त करूं?

अगर मैं निम्न कार्य करें:

var order = dataContext.Orders.Where(o => o.id == orderId).First(); 

// More code here 

dataContext.ProcessOrder(orderId); 

order.Status = "PROCESSED"; 

dataContext.SubmitChanges(); 

... तो मैं एक संगामिति उल्लंघन मिल जाएगा अगर ProcessOrder संग्रहीत proc आदेश (बेशक बहुत संभावना की है) में संशोधन किया है, क्योंकि L2S की पहचान करेगा कि ऑर्डर रिकॉर्ड बदल गया है, और उस क्रम में परिवर्तन सबमिट करने में विफल रहेगा।

यह सब काफी तार्किक है, लेकिन अगर मैं संग्रहित प्रो को कॉल करने के बाद ऑर्डर रिकॉर्ड अपडेट करने के लिए चाहता हूं तो क्या होगा? मैं अपनी कैश की गई प्रतिलिपि को भूलने और डीबी से रीफ्रेश करने के लिए एल 2 एस कैसे कहूं?

उत्तर

15

आप अपने डेटा संदर्भ पर Refresh विधि के साथ यह कर सकते हैं, तो जैसे:

DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, 
        DataContext.Orders); 
+0

बिल्कुल सही। मैं देखता हूं कि मैं एक विशिष्ट ऑर्डर रिकॉर्ड भी निर्दिष्ट कर सकता हूं, जो वास्तव में मुझे चाहिए। धन्यवाद! –

+1

लेकिन यह संबंधित नेविगेशन संग्रह संपत्ति को अद्यतन नहीं करता है जो किसी अन्य तालिका में मानचित्र करता है। यह केवल उन गुणों को अद्यतन कर रहा है जो तालिका के कॉलम पर मैप करते हैं, जिस पर वर्तमान इकाई इंगित करती है। क्या इसका कोई तरीका है? – RBT

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

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