2012-01-29 26 views
8

मुझे अपने विंडोज फोन मैंगो एप्लिकेशन में SQLCE डेटाबेस क्वेरी करने का प्रयास करते समय समस्या का सामना करना पड़ रहा है।कॉलम का नाम मान्य नहीं है। [नोड नाम (यदि कोई है) = t0, कॉलम नाम = संस्करण]

मैं जब मैं

foreach (var item in myDataContext.MyTable.Select(item => item))

The column name is not valid. [ Node name (if any) = t0,Column name = version ]

अजीब निष्पादित अपवाद मिलता है, जब मैं किसी भी व्यक्ति के स्तंभ के आधार पर क्वेरी को निष्पादित, यह ठीक काम करता है

foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))

किसी भी विचार क्या गलत हो सकता है?

+0

क्या आपका संस्करण कॉलम 'प्राथमिक कुंजी' है? – Tigran

+0

मेरे पास संस्करण कॉलम नहीं है –

उत्तर

5

मैं LINQ to SQL Debug Visualizer स्थापित पता लगाने के लिए वास्तव में क्या दृश्य के पीछे जा रही है क्वेरी और यह

{SELECT [t0].[version], [t0].[ID], [t0].[Volume], ... similarly rest of the columns FROM [MyTable] AS [t0]

था यह अजीब था, क्योंकि मैं अपनी मेज (कभी) में संस्करण स्तंभ पड़ा। मैं अपने मॉडल में देखा है और मैंने पाया इस स्तंभ परिभाषित

[Column(IsVersion = true)] 
private Binary version; 

मैं इन दो पंक्तियों बाहर टिप्पणी करके कॉलम को हटा दिया और ऐप्स के पुन: भाग गया। नए जेनरेट किए गए एसक्यूएल में version कॉलम नहीं था और मेरी क्वेरी ठीक काम करती थी।

मैं LINQ से SQL कक्षाएं उत्पन्न करने के लिए SQLCEMangoCodeGenerator का उपयोग कर रहा हूं। मुझे लगता है कि इस उपकरण में त्रुटि है जिसके कारण यह एक अतिरिक्त कॉलम उत्पन्न हुआ है जो मेरे टेबल में नहीं था

+0

DataContext जेनरेट करने के लिए SQL सर्वर कॉम्पैक्ट टूलबॉक्स का उपयोग करने का प्रयास करें! – ErikEJ

2

मुझे "SQLCEMangoCodeGenerator" टूल के साथ एक ही समस्या हो रही थी।

मैं "एसक्यूएल सर्वर कॉम्पैक्ट उपकरण बॉक्स" उपकरण का उपयोग शुरू कर दिया है और मैं किसी भी मुद्दे नहीं किया है: http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/

(के लिए खोज "नई: DataContext" एक स्क्रीन शॉट के लिए ऊपर वेबसाइट पर एक बार जब आप। एक्सटेंशन को इंस्टॉल किया है, टूल्स मेनू में "SQL सर्वर कॉम्पैक्ट टूलबॉक्स" पर क्लिक करें)

1

मैंने पूरे डेटाबेस को हटाकर इसे फिर से हल करके इस समस्या को हल किया।

मोटे तौर पर, ऐसा होता है, यदि आपके पास डेटाबेस में तालिका का पुराना संस्करण है, तो आप उस तालिका में मौजूद नहीं हैं।

0

एसक्यूएल सर्वर प्रबंधन स्टूडियो के साथ SqlCE.sdf में चलाएँ:

DELETE FROM [User] WHERE [User].[UserName] = "zz"

स्तंभ का नाम मान्य नहीं के साथ इसी तरह मुद्दा मिल गया है, लेकिन कोटेशन बदलको अक्षर लोप:

DELETE FROM [User] WHERE [User].[UserName] = 'zz'

और यह काम किया!

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