मेरे पास एक नया नया सर्वर है जिसे मैंने .NET 4.5 बीटा को पुनर्वितरण योग्य स्थापित किया है। स्थानिक सुविधाओं का उपयोग करने की कोशिश करते समय मुझे एक लागू अपवाद प्राप्त हो रहा है। अगर मैं पूर्ण VS.NET 11 बीटा तो स्थापित कोड ठीक काम करता है इस कोड को ....NET 4.5 बीटा डीबीजीोग्राफी NotImplementedException
var x = DbGeography.PointFromText(string.Format("POINT({0} {1})", -45, 45), 4326);
इस अपवाद फेंकता ...
System.NotImplementedException: The method or operation is not implemented.
at System.Data.Spatial.DefaultSpatialServices.GeographyPointFromText(String geographyText, Int32 spatialReferenceSystemId)
। कोई विचार क्यों? क्या चीज़ छूट रही है?
उत्तर
पावेल के लिए धन्यवाद के लिए अद्यतन। आपको एसक्यूएल सीएलआर प्रकार स्थापित करने की आवश्यकता है। आप इस लिंक पर 2012 संस्करण प्राप्त कर सकते हैं: माइक्रोसॉफ्ट एसक्यूएल सर्वर के लिए
माइक्रोसॉफ्ट सिस्टम CLR प्रकार 2012 http://www.microsoft.com/download/en/details.aspx?id=29065
राय
मैं वास्तव में न समझ में क्यों .NET फ़्रेमवर्क एक है एसक्यूएल सर्वर पर निर्भरता। इन वर्गों के बारे में कुछ खास नहीं है। मुझे एहसास है कि यह एक ऐतिहासिक चीज है जहां कोड मूल रूप से एसक्यूएल टीम द्वारा लिखा गया था और .NET टीम इसका पुन: उपयोग करना चाहता था। यह बहुत स्पष्ट नहीं है कि यह एक प्रदाता-आधारित कार्यान्वयन है। एक बेहतर अपवाद संदेश एक दिन के काम को बचाया होगा।
निर्भरता का कारण वास्तव में प्लेटफॉर्म स्वतंत्र होना है। ईएफ उपयोगकर्ता को डीबीजीगोग्राफी और डीबीजीमेट्री प्रकार (जो प्लेटफॉर्म अज्ञेयवादी हैं) का खुलासा करता है लेकिन डेटाबेस में उनके स्वयं के स्थानिक प्रकार होते हैं जिन्हें वे समझते हैं। एसक्यूएल सर्वर के अपने स्थानिक प्रकार हैं लेकिन ओरेकल के अपने स्थानिक प्रकार होंगे। स्थानिक प्रदाता को ईएफ स्थानिक प्रकारों का अनुवाद करने की आवश्यकता होती है जो डेटाबेस समझते हैं। चूंकि आप SqlServer का उपयोग कर रहे हैं SqlServer विशिष्ट स्थानिक प्रदाता DbGeometry और DbGeography प्रकारों को SQL सर्वर विशिष्ट प्रकारों में अनुवादित करता है। एसक्यूएल सर्वर डीबीजीओोग्राफी या डीबीजीमेट्री को समझ में नहीं आता है। – Pawel
लेकिन वह कोड SQL सर्वर का उपयोग नहीं कर रहा है; यह सिर्फ .NET कोड की एक पंक्ति है। मैं डेटाबेस के साथ बिल्कुल बातचीत नहीं कर रहा हूं। अगर मैं एक मेमोरी भू-स्थानिक अनुप्रयोग बनाना चाहता हूं तो क्या होगा? मैं सिर्फ .NET के साथ ऐसा क्यों नहीं कर सकता? – craigtadlock
संपूर्ण स्थानिक कार्यक्षमता का निर्माण इकाई फ्रेमवर्क के दायरे से बाहर है और यह एसकएलसेवर टीम द्वारा पहले से ही किया गया है इसकी प्रतिलिपि बना रहा होगा। हमारे पास विशेषज्ञता नहीं है और हम इस समय एंटिटी फ्रेमवर्क की नई सुविधाओं पर खर्च करेंगे। यदि आपको डेटाबेस के बिना स्थानिक प्रकारों का उपयोग करने की आवश्यकता है तो आप शायद एक विशेष प्रकार की लाइब्रेरी का उपयोग करके बेहतर हो जाएंगे जो पूरी तरह से स्थानिक कार्यक्षमता पर केंद्रित है। यह शायद भी बेहतर प्रदर्शन करेगा। – Pawel