2011-02-11 11 views
14

का उपयोग कर रहा एफ # के साथ System.Data.Sqlite उपयोग करने के लिए कोशिश कर रहा हूँ। सी # में, मैंच # कीवर्ड का उपयोग करें और

using (DbTransaction dbTrans = con.BeginTransaction()) { 
    using (SQLiteCommand cmd = con.CreateCommand()) { 
     //blahblah 
    } 
    dbTrans.Commit(); 
} 

लेकिन एफ # में की तरह कोड जब मैं समान दो using का उपयोग ऊपर मैं the type bool is not compatible with the type IDisposable की त्रुटि ... संपादित मैं अपने प्रश्न के लिए वास्तव में माफी चाहता हूँ मिल गया है। use एफ # मामले में काम करेगा। मैं सिर्फ अपने quesetions को बंद/हटाने के बारे में नहीं जानता।

+4

मुझे नहीं पता कि आपको वास्तव में प्रश्न को हटाने की आवश्यकता है या नहीं। यह एक बुरा सवाल नहीं है: यह एक उत्थान, और दो सभ्य उत्तरों मिला है। – Benjol

उत्तर

8
च # में

यह

use dbTrans = new con.BeginTransaction() 

और

use cmd = con.CreateCommand() 

है जब आपके समारोह समाप्त हो जाती है

15

कुछ विवरण जोड़ने के लिए इन निपटान करेगा - यदि आप स्पष्ट रूप से गुंजाइश को कहाँ आदेश मान्य है जरूरत (अपने सी # उदाहरण में बिल्कुल वही व्यवहार प्राप्त करने के लिए, जहां cmd आईडी Commit पर कॉल करने से पहले निपटाया गया है) आप लिख सकते हैं:

use dbTrans = con.BeginTransaction() 
(use cmd = con.CreateCommand() 
    cmd.BlahBlahBlah()) 
dbTrans.Commit() 

दायरा केवल अभिव्यक्ति का एक हिस्सा है जहां प्रतीक परिभाषित किया गया है, ताकि आप इसे कोष्ठक का उपयोग करके स्पष्ट कर सकें।

using केवल एक एफ # फ़ंक्शन है जिसे आप use का उपयोग करके विशेष वाक्यविन्यास से पहले उपयोग कर सकते हैं। बस FYI करें, वाक्य रचना इस तरह दिखता है:

using (con.BeginTransaction()) (fun dbTrans -> 
    using (con.CreateCommand()) (fun cmd -> 
    cmd.BlahBlahBlah()) 
dbTrans.Commit()) 

का उपयोग कर use निश्चित रूप से एक बेहतर विचार है कोड लेखन (लेकिन आप और अधिक दिलचस्प व्यवहार संपुटित करने using की तरह अपने कार्यों को परिभाषित कर सकते हैं - जैसे लेन-देन)।

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