2010-02-18 2 views
13

में फ़ाइलों के साथ लेनदेन स्कोप मैं डेटाबेस के साथ काम करने के लिए लेनदेनस्कोप का उपयोग कर रहा हूं और यह अच्छा लगता है। क्या मैं के लिए देख रहा हूँ है निम्नलिखित:सी #

using(var scope=new TransactionScope()) 
{    
    // Do something with a few files... 
    scope.Complete(); 
} 

लेकिन स्पष्ट रूप से यह काम नहीं करता - अगर वहाँ 20 फ़ाइलें हैं, और एक अपवाद 9 फ़ाइल पर होता है, सभी पिछले 8 बदल और रहने के बाकी अपरिवर्तित - कोई रोलबैक नहीं किया जाता है। तो, फ़ाइलों के लिए एक दायरे जैसी व्यवहार को लागू करने का सबसे अच्छा तरीका क्या होगा?

मुझे उम्मीद है कि एक साधारण जवाब है, लेकिन यदि नहीं, तो क्या आप मुझे कुछ पॉइंटर्स दे सकते हैं, या मुझे संबंधित लेख में इंगित कर सकते हैं?

उत्तर

6

आप Windows Vista द्वारा पेश किए गए Transactional NTFS की तलाश में हैं।

Here is a managed wrapper

+0

धन्यवाद, यह वही है जो मैं देख रहा था। – avance70

+2

दुर्भाग्य से, उनके प्रबंधित रैपर प्रत्येक कार्य को अपने लेनदेन के दायरे में लपेटता है। मुझे अधिभार बनाना पड़ा जो मुझे अपने दायरे में गुजरने की इजाजत देता था। –

+3

बस एफवाईआई, माइक्रोसॉफ्ट ट्रांजेक्शन एनटीएफएस को हटाने पर विचार कर रहा है। http://msdn.microsoft.com/en-us/library/windows/desktop/hh802690%28v=vs.85%29.aspx – Nathan

3

आप कोडप्लेक्स और NuGet पर उपलब्ध .NET Transactional File Manager लाइब्रेरी का प्रयास कर सकते हैं। यह किसी भी फाइल सिस्टम का समर्थन करता है और लेनदेन संबंधी एनटीएफएस पर एक रैपर नहीं है।

परियोजना विवरण से:

लेन-देन संबंधी फ़ाइल प्रबंधक एक .NET एपीआई जैसे फ़ाइल प्रतिलिपि के रूप में फ़ाइल प्रणाली संचालन, चाल सहित का समर्थन करता है कि, हटाने, संलग्न, आदि एक लेनदेन में है। यह सिस्टम का कार्यान्वयन है। लेनदेन। IElistlistNotification ( सिस्टम के साथ काम करता है। लेनदेन। ट्रांज़ेक्शनस्कोप)।