2009-12-12 12 views
5

तो, लिंक Geography डेटा प्रकार का समर्थन नहीं करता है, जो सुंदर 'ड्रैग टेबल में लिंक डिजाइन सतह' developemnt मॉडल पर कार्यों में एक प्रमुख स्पैनर फेंकता है।लिंक और असमर्थित डेटा प्रकार (भूगोल)

क्या कोई तरीका है कि मैं भूगोल डेटाटाइप के साथ काम करने के लिए लिंक का विस्तार कर सकता हूं? या जब भी मुझे भूगोल कॉलम का उपयोग करने की ज़रूरत है, तो मुझे एक नया नया डेटालर और प्रश्नों का सेट बनाने की आवश्यकता होगी?

मैं कुछ दिनों के लिए इस पर अटक गया हूं और यदि संभव हो तो काम नहीं कर सकता।

उत्तर

1

Looks like आपको अपने आप को अपने स्वयं के पॉको प्रकार पर मैन्युअल रूप से मानचित्र/पार्स करना होगा।

3

स्तंभ को एक varbinary (अधिकतम) पर कास्ट करें, जो लिंक से SQL संभाल सकता है। प्रत्येक क्वेरी में ऐसा करने से बचने का एक तरीका सिर्फ CAST(GeographyColumn AS varbinary(max)) के रूप में परिभाषित एक गणना कॉलम जोड़ना है।

एक बार जब आप byte[] डेटा है, तो आप यह वास्तविक Microsoft.SqlServer.Types.SqlGeography वर्ग के लिए कन्वर्ट करने के लिए एक छोटी उपयोगिता विधि एक MemoryStream और IBinarySerialize का उपयोग कर लिख सकते हैं। Read/Write विधियां।

जहां तक ​​मुझे पता है, यह एकमात्र कामकाजी समाधान है यदि आपको भूगोल, ज्यामिति, पदानुक्रम, और किसी भी कस्टम प्रकार सहित किसी भी सीएलआर प्रकार के साथ काम करने की आवश्यकता है - लिंक "उनमें से किसी भी" का समर्थन नहीं करता है। यह सभी बॉयलरप्लेट कोड लिखने में दर्द का थोड़ा सा दर्द है, लेकिन आप कुछ विस्तार विधियों के साथ इसे आसान बना सकते हैं।

आप इस तरह से कॉलम के खिलाफ पूछने में सक्षम नहीं होंगे; हालांकि, आप Linq Dynamic Query Library का उपयोग करके आधे रास्ते पर कॉल कर सकते हैं। आपके पास इंटेलिजेंस या कुछ अन्य लिंक उपहार नहीं होंगे, लेकिन यह अभी भी संगत है और इसलिए हर क्वेरी को हाथ से तैयार करने से बेहतर है, और आप मजबूत टाइप किए गए परिणाम प्राप्त कर सकते हैं।

अपडेट: मुझे थोड़ा क्लीनर समाधान here मिला। आप इस तरह डिजाइनर का उपयोग कर सकते हैं; SqlGeography रैपर प्रॉपर्टी को आंशिक कक्षा में जोड़ें और SqlBytes कक्षा के साथ STGeomFromWKB विधि का उपयोग करें। हालांकि, यह आपको अभी भी इनलाइन क्वेरी क्षमताओं नहीं देगा।

+0

ठीक है, लेकिन यह मुझे स्थानिक प्रश्नों को चलाने में मदद करने के लिए कुछ भी नहीं करेगा? मेरा मतलब है, अगर मैं चाहता हूं तो मुझे अपने प्रश्नों को बनाना होगा, जहां 'एक्स एक्सईटीई वाईईएसईइंटरटेक्ट्स (एक्स) ' –

+0

हां, आप दुर्भाग्य से - लिंकक को जोड़ने के लिए एक बेहतर तरीका भी होंगे एसएलएल को सीएलआर प्रकार को कॉलम के रूप में स्वीकार करने में, यह अभी भी नहीं पता होगा कि SQL फ़ंक्शन कॉल में इसकी विधियों को कैसे मैप करना है। आपकी सबसे अच्छी शर्त एसक्यूएस या यूडीएफ के रूप में एसक्यूएस या यूडीएफ के रूप में इन प्रश्नों को एसक्यूएल सर्वर में लिखना है, लेकिन अगर आपको ऐप के भीतर अपना एसक्यूएल बिल्कुल लिखना होगा, तो आप लिंक डायनामिक क्वेरी लाइब्रेरी का उपयोग करके जो चाहते हैं उसे प्राप्त कर सकते हैं। – Aaronaught

+0

यदि आपने DynamicQuery से परिचित नहीं हैं तो मैंने एक लिंक के साथ उत्तर अपडेट किया है। – Aaronaught

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