2011-10-05 15 views
9

मैं LINQPad का उपयोग कर रहा हूं और मैं एक तालिका के स्कीमा विवरण जानना चाहता हूं।LINQ: तालिका विवरण प्राप्त करें

मैं जानता हूँ कि मैं इसे एसक्यूएल का उपयोग कर कि:

SELECT column_name,* 
FROM information_schema.columns 
WHERE table_name = '{table_name}' 
ORDER BY ordinal_position 

मैं इस LINQ का उपयोग कर सकते कैसे?

+0

मुझे पता है कि linq पैड यह करता है। शायद आप linq निष्पादन योग्य पर प्रतिबिंबित कर सकते हैं? रिशेर्पर में "डॉटपीक" है जो मुफ़्त है। – Crisfole

+0

@Cpfohl: मैं प्रतिबिंब कैसे करूं? –

+0

मुझे लगता है कि नीचे दिए गए उत्तर पर्याप्त से अधिक हैं। वास्तव में स्रोत को देखने के लिए आपको प्रतिबिंबक की वेबसाइट से dotPeek डाउनलोड करना होगा और इसे exe पर चलाएं। – Crisfole

उत्तर

6

LINQ से SQL संदर्भों में Mapping संपत्ति है जिसका उपयोग आप इस प्रकार की चीज़ के लिए कर सकते हैं। एक आप कुछ इस तरह लग सकता है प्रदान की तरह एक क्वेरी:

from t in context.Mapping.GetTables() 
where t.TableName == "[table_name]" 
from c in t.RowType.DataMembers 
orderby c.Ordinal 
select new {columnName = c.Name, columnInfo = c} 

अधिक जानकारी के लिए this answer देखें।

+0

मुझे 'आईनेमरेबल <> (0 आइटम)' –

+0

@inquisitive_one मिलता है: मुझे लगता है कि यह आपके टेबल नाम के कारण है। जैसा कि आप दिए गए उदाहरण में देखते हैं, इसे ब्रैकेट में घिरा होना चाहिए। इसलिए 'person_sites' नामक एक तालिका को '[person_sites] "'' कहने की आवश्यकता होगी। – StriplingWarrior

+0

मुझे अभी भी एक ही परिणाम मिल गया है। मैं इसे LINQPad में "सी # अभिव्यक्ति" के रूप में कर रहा हूं। –

4
MetaTable t = MyDataContext.Mapping.GetTables().Where(
    i => i.TableName == "TABLENAME").SingleOrDefault(); 
PropertyInfo[] fields = t.RowType.InheritanceRoot.GetType().GetProperties(); 

'फ़ील्ड' में कॉलम के नाम और प्रकार होंगे।

+0

मुझे 'नामस्थान नाम का प्रकार "मेटाटेबल" नहीं मिला। –

+0

[System.Data.Linq] (http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.metatable.aspx) –

+0

मुझे अभी भी वही संदेश मिलता है। मैंने क्वेरी के अतिरिक्त संदर्भों में "System.Data.Linq.dll" जोड़ा। मैं LINQPad में "सी # स्टेटमेंट्स" का उपयोग कर रहा हूं। –

0

LINQ से SQL में, आप इन विचारों को मॉडल में लाने का प्रयास कर सकते हैं। यदि यह काम नहीं करता है, तो आप एक संग्रहित प्रक्रिया बना सकते हैं जो जानकारी को पुनर्प्राप्त करता है, फिर LINQ से SQL संग्रहीत प्रक्रिया को मानचित्र करता है और आप इसे फ़ंक्शन के रूप में निष्पादित करते हैं।

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