2013-03-12 4 views
8

साथ LINQPad का उपयोग करते हुए मैं Sql सर्वर 2008 R2 मानक के लिए एसएमओ उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन मैं एक मुद्दा में चल रहा जब भी मैं Dump एक वस्तु का प्रयास करें।एसएमओ

Error

प्रासंगिक कोड:

void Main() 
{ 
    var connectionString = @"Server=(local);Trusted_Connection=True;"; 
    Server server = new Server(new ServerConnection(new SqlConnection(connectionString))); 
    server.ConnectionContext.Connect();  

    server.Dump(); //Error  

    Database database = new Database(server, "master"); 
    database.Refresh(); 

    database.Dump(); // Error 

    IEnumerable<Table> tables = database.Tables.Cast<Table>(); 

    tables.Dump(); //Error 
} 

Assemblies Includes

संपादित करें:

मैंने पाया कि चारों ओर एक काम एक निश्चित प्रत्यावर्तन गहराई के साथ Dump विधि का उपयोग करने के लिए है जैसे Dump(1), लेकिन अपवाद प्रत्येक वस्तु के लिए एक अलग स्तर पर है।

उत्तर

4

क्या हो रहा है कि एसएमओ ऑब्जेक्ट गुणों में से एक पर GetEnumerator को कॉल करने का कार्य अपवाद फेंक रहा है और LINQPad ऑब्जेक्ट ग्राफ के बाकी हिस्सों के बजाय केवल उस अपवाद को डंप करके प्रतिक्रिया देता है।

मैं इस LINQPad में एक बग पर विचार और इसलिए अगले बीटा निर्माण के लिए यह तय कर दी है।

बहरहाल, यह भी साथ तय हो गई है, तो आप क्योंकि यह इतने सारे गुण है कि उम्र लेने की गणना करने में है कि डंप बुला() एक एसएमओ वस्तु पर हमेशा के लिए ले जाएगा मिल जाएगा। तो आपको या तो रिकर्सन गहराई को सीमित करना होगा, या डंप (सत्य) को कॉल करना होगा जो 'डेटाग्रिड्स के परिणाम' बटन पर क्लिक करने के बराबर है। डेटा ग्रिड में डंपिंग परिणाम समस्या से बचाता है क्योंकि ग्रिड डेटा को आलसी प्रदान करते हैं।

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