उनके पदानुक्रम डेटाप्रकार के साथ काम करने एसक्यूएल/संस्थाओं 4.0 LINQ उपयोग करने के लिए एक रास्ता है एसक्यूएल या LINQ संस्थाओं के लिए करने के लिए Linq करता है?4.0 समर्थन hierarchyid डेटाप्रकार
उत्तर
ओआरएम के माइक्रोसॉफ्ट परिवार में से कोई भी वर्तमान में सीएलआर उपयोगकर्ता-परिभाषित प्रकारों का उपयोग नहीं कर सकता है (जिसमें अंतर्निहित hierarchyid
और भू-स्थानिक प्रकार) कॉलम प्रकार के रूप में शामिल हैं।
अभिव्यक्ति
CAST(hid AS varbinary892))
साथ पदानुक्रम मेज पर एक गणना स्तंभ जोड़ें:आप अपने डेटाबेस में इन का उपयोग करते हैं, तो आप दो तरीके दिए है। आप सुनिश्चित करें कि आप में इस स्तंभ हर क्वेरी (संग्रहित प्रक्रियाओं सहित) Linq से इस्तेमाल किया जाता है कि बनाने के लिए की आवश्यकता होगी। फिर, को कॉलम इकाई मैपिंग में जोड़ें।
इस बिंदु पर, आप
Microsoft.SqlServerTypes
के लिए एक संदर्भ जोड़ने औरBinaryReader
/BinaryWriter
वर्गों का उपयोगSqlHierarchyId
से करने के लिए/ब्लॉब डेटा कन्वर्ट करने के द्वारा अपनी ही संपत्ति के रूप में "असली"hierarchyid
स्तंभ जोड़ने के लिए इकाई के आंशिक वर्ग का विस्तार कर सकते हैं।ध्यान दें कि आप इस कॉलम के खिलाफ लिंक प्रश्न नहीं लिख सकते हैं। यदि आप कोशिश करते हैं तो आपको बस "कोई समर्थित अनुवाद" त्रुटि नहीं मिलेगी। तो ध्यान रखें कि यह सीमित वर्कअराउंड है।
दूसरा विकल्प, और जिसे मैं आम तौर पर पसंद करता हूं,
hierarchyid
कॉलम का उपयोग L2S/EF के भीतर से नहीं करना है। पदानुक्रम तालिका में एक अलग-अनुक्रमित सरोगेट ऑटो-इंक कुंजी जोड़ें और कार्यान्वयन विवरण के रूप मेंhierarchyid
का इलाज करें। पदानुक्रमित प्रश्नों को लागू करने के लिए यूडीएफ और दृश्यों का उपयोग करें जिन्हें केवल पैराग्राफ के रूप में सरोगेट आईडी की आवश्यकता होती है।यह एक दर्द की तरह लगता है, लेकिन यह अगर आप से मिल-जाना इस तरह से काम करते हैं कि बुरा वास्तव में नहीं है। इससे पहले माइक्रोसॉफ्ट
hierarchyid
प्रकार पेश किया, मैं डेनिस फोर्ब्स का एक रूपांतर उपयोग कर रहा था 'पथ पदानुक्रम है, जो एक निकटता सूची के आसपास आधारित और असमान्यीकरण का एक प्रकार के रूप में पथ को बनाए रखने गया था materialized।hierarchyid
इसे करने में बहुत आसान बनाता है।दुर्भाग्यवश मेरे पास
hierarchyid
और आसन्नता सूची के बीच सही संगठनों को बनाए रखने के लिए आपको जो कुछ करने की आवश्यकता है, उसका पूर्ण कार्य उदाहरण नहीं है, लेकिन यदि आप Dennis's article पढ़ते हैं तो यह एक अच्छी शुरुआत होनी चाहिए। भौतिक मार्ग को लागू न करें, इसके बजायhierarchyid
का उपयोग करें, लेकिन ट्रिगर्स के साथ स्वयं-बनाए रखने वाले पदानुक्रमों को लागू करने के बारे में अनुभाग पढ़ें।यदि माइक्रोसॉफ्ट कभी भी अपने ओआरएम में
hierarchyid
के लिए समर्थन लागू करता है, तो आसन्नता सूची को हटाने औरhierarchyid
के आधार पर विशेष रूप से समाधान के लिए स्विच करना आसान होगा। लेकिनhierarchyid
के आधार पर पदानुक्रमों के प्रबंधन के बाद को बनाए रखने के लिए संग्रहित प्रक्रियाओं की आवश्यकता होती है, फिर भी (चूंकि आपको "स्वचालित" आईडी नहीं मिलती हैं), आपको पदानुक्रमित प्रश्नों के आस-पास कई SQL UDFs और संग्रहीत प्रक्रिया अबास्ट्रक्शन लिखने में सहजता मिलनी चाहिए।
एक शब्द में, नहीं। वैसे भी, सीधे नहीं। हालांकि, आप work around it similarly to geospatial types पर सक्षम हो सकते हैं। मैंने कोशिश नहीं की है।
हम हारूनॉट के लिंक से एसक्यूएल के समान समाधान का उपयोग करते हैं।
हम गणना कॉलम
TreeId.ToString()
वर्तमान hierarchyid-स्तंभ के लिए और
[TreeId].[GetAncestor](1).ToString()
प्रत्यक्ष माता पिता के लिए
बनाने की है।
हमने एक ऐसा दृश्य भी बनाया जो पदानुक्रम-कॉलम को शामिल करता है और इस दृश्य को डीबीएमएल-आरेख पर खींचता है और संदर्भित तालिकाओं में एसोसिएशन सेट करता है।
अधिकांश पदानुक्रम-कार्यक्षमता संग्रहित प्रक्रियाओं के रूप में होने की आवश्यकता है।
- 1. उत्पन्न HierarchyID
- 2. HierarchyId (SQL Server 2008)
- 3. NHibernate समर्थन .NET 4.0 ढांचा?
- 4. डेटाप्रकार पदोन्नति
- 5. एंड्रॉइड 4.0 में ब्लूटूथ स्मार्ट (4.0)/जीएटीटी समर्थन?
- 6. Convert डेटाप्रकार बाइट सरणी
- 7. एक पदोन्नत डेटाप्रकार
- 8. jQuery ajax त्रुटि "स्क्रिप्ट" डेटाप्रकार
- 9. का उपयोग enum डेटाप्रकार उद्देश्य सी
- 10. mysql, जहां आप सेट डेटाप्रकार आइटम
- 11. प्राथमिक कुंजी डेटाप्रकार सांख्यिक चुनने (18,0)
- 12. deserialize सी # में कस्टम एक्सएमएल डेटाप्रकार
- 13. .NET 4.0
- 14. 4.0
- 15. .NET 4.0
- 16. .NET 4.0 और C# 4.0
- 17. .NET 4.0 DLR
- 18. .NET Framework 4.0
- 19. वहाँ SQLite में यूआईडी डेटाप्रकार यदि हाँ तो कैसे कि
- 20. त्रुटि परिवर्तित डेटाप्रकार nvarchar int करने के लिए
- 21. सी # 4.0
- 22. सी # 4.0
- 23. एमवीसी 4.0
- 24. एक्सकोड 4.0
- 25. .NET 4.0
- 26. एएसपी.NET 4.0
- 27. सी # 4.0
- 28. .NET 4.0
- 29. .NET 4.0
वाह .. बहुत धन्यवाद। मैंने अभी पदानुक्रम को एक ब्लॉब में बदलने और इसे वापस पदानुक्रम में परिवर्तित करने का निर्णय लिया है। मैं शोध कर रहा हूं कि यह कैसे करें। धन्यवाद – Luke101