2013-01-23 16 views
8

मेरी DataAccess परियोजना में मैं कोड है।उपयोग करने का बयान एक त्रुटि क्यों देता है भले ही मेरा प्रकार IDISposable लागू करता है?</p> <pre><code>using (TandAEntities dataContext = new TandAEntities()) { // Some code } </code></pre> <p>यह कोई त्रुटि देता है और ठीक काम करता है:

लेकिन मेरे यूनिट टेस्ट प्रोजेक्ट में, मेरे पास एक ही कोड है, लेकिन संकलक एक त्रुटि देता है; एक बयान का उपयोग करने में इस्तेमाल किया प्रकार परोक्ष 'System.IDisposable'

के लिए परिवर्तनीय मैं F12 दबाकर परिभाषा जाँच होना चाहिए, और यह वास्तव में IDisposable लागू है, और एक निपटाने विधि है है।

क्या मुझे शायद कुछ संदर्भ याद आ रहे हैं?

+0

क्या आप अपने यूनिट परीक्षण का कोड दिखा सकते हैं जो संकलन नहीं कर रहा है? –

+1

http://stackoverflow.com/questions/6754021/linq-context-object-isnt-registering-as-a-type-of-system-idisposable-object –

उत्तर

12

जुड़ा हुआ दो प्रतियों में सबसे अधिक संभावना जवाब - लापता using System.Data.Linq

अन्य विकल्प: आपके पास कहीं भी डीएलएल हैं (यानी जीएसी में स्थापित)।

आप आसानी से बस के चारों ओर देख रही है और जाँच GAC द्वारा बासी DLL नहीं मिल सकते हैं - कुछ इस प्रकार का उपयोग करता है लेकिन संकलित है कि करने के लिए परिवर्तन कोड और परीक्षण डिबग। डीबग-> विंडोज-> इस प्रकार के असेंबली के स्थान के लिए मॉड्यूल वास्तव में उपयोग किया जाता है।

+7

मैं System.Data.Linq का उपयोग कर शामिल किया गया तथा उसने ऐसा नहीं किया काम, लेकिन फिर मैंने EntityFramework का एक संदर्भ जोड़ा, और फिर यह काम किया। – Cloud9999Strife

+3

बिंदु सभी आवश्यक डीएलएल जोड़ने के लिए है ताकि संकलक उन सभी को खोज सकें जो बेस क्लास को खोजने के लिए खोज सकते हैं जिसे 'आईडीस्पोजेबल' में परिवर्तित किया जा सकता है। उदाहरण के लिए, 'DataContext' क्लास जो' IDISposable 'लागू करता है, EntityFramework dll में मौजूद है। –

+2

मेरे मामले के लिए, जब मैं System.Data.Linq संदर्भ जोड़ता हूं तो त्रुटि – etlds