2010-11-30 16 views
12

काम नहीं कर रहा है हम अपने आवेदन के लिए एक इकाई फ्रेमवर्क मॉडल के आधार पर डब्ल्यूसीएफ डाटा सेवा का उपयोग कर रहे हैं।एंटीटी फ्रेमवर्क में पदानुक्रमित

इसमें हमें HierarchyId के कॉलम के साथ तालिका जोड़ने की आवश्यकता है। जब मैं उस तालिका को ईडीएमएक्स फ़ाइल में जोड़ता हूं, तो HierarchId कॉलम कक्षा फ़ाइल में दिखाई नहीं दे रहा है।

HierarchyID का उपयोग करने के लिए मुझे क्या करना चाहिए? मैंने पढ़ा है कि इकाई फ्रेमवर्क HierarchyID का समर्थन नहीं कर रहा है, तो मैं इसे कैसे प्राप्त कर सकता हूं?

+2

आपका समस्या ईएफ के साथ है, डब्ल्यूसीएफ नहीं। समस्या यह है कि ईएफ पदानुक्रम कॉलम का प्रतिनिधित्व नहीं कर सकता है। – Gabe

+0

मैंने इस छोटे से कोड का उपयोग हाइरार्चीइड स्ट्रिंग के साथ काम करने के लिए थोड़ा आसान किया ... http://stackoverflow.com/questions/3347860/is-there-a- व्यावहारिक-way-to-use-the-hierarchyid- डेटाटाइप-इन-एंटिटी-फ्रेमवर्क -4 – EBarr

+0

@EBarr, आपका कार्यान्वयन अच्छा दिखता है, मेरी आवश्यकता केवल मौजूदा पदानुक्रम के रूप में उपयोग की गई थी। एकमात्र चीज जो मैंने की थी, गणना की गई कॉलम का उपयोग ईएफ का समर्थन नहीं करता था। गणना कॉलम के उपयोग से, यह अपना काम बहुत अच्छा कर रहा है। – Mohanavel

उत्तर

24

आप HierarchyId को अपने स्ट्रिंग प्रस्तुति में हमेशा परिवर्तित कर सकते हैं - /1/3/4/1 जैसे कुछ - और उस स्ट्रिंग को डब्ल्यूसीएफ डेटा सेवा में भेजें।

अद्यतन: आप इस, अभिकलन अपने एसक्यूएल सर्वर तालिका में कॉलम कायम, कि नया स्तंभ निश्चित रूप से अपने एफई मॉडल में दिखाई देने लगेगा और आप इस का उपयोग करने के WCF और WCF डाटा से अधिक इसे वापस भेजने के लिए सक्षम होना चाहिए जोड़ने सेवाएं:

ALTER TABLE dbo.YourTable 
ADD HierarchyString AS (your hierarchyID field).ToString() PERSISTED 

अद्यतन # 2:read the docs! आप /1/3/4/1 जैसे स्ट्रिंग को HierarchyId प्रकार में पार्स कर सकते हैं - या तो HierarchyId::Parse(string) या सामान्य CAST(string as HierarchyId) ऐसा करने के तरीकों का उपयोग करें।

+0

जैसा कि मैंने शुरुआती बताया, EDMX फ़ाइल में तालिका जोड़ते समय, पदानुक्रम आईडी फ़ील्ड दिखाई नहीं दे रहा है। तो मुझे svc फ़ाइल में विधि है और "सम्मिलित करें ..." क्वेरी का उपयोग करके सम्मिलित करना है? – Mohanavel

+1

ठीक है, इसका उपयोग गेटर के रूप में किया जा सकता है, कैसे सेटटर के बारे में? मैंने सेटटर की तरह सामान की कोशिश की। यदि सेटर संभव है, तो सबकुछ सरल तरीके से किया जा सकता है। इसका उपयोग करके मैं डेटा प्राप्त करने में सक्षम हूं। धन्यवाद marc_s। – Mohanavel

+0

@ मोहनवेल: अभी तक मेरा जवाब अपडेट किया गया ..... –

10

आप गणना स्तंभ का उपयोग करें, तो बस यह ध्यान रखें कि आप भी इस तरह अपनी संपत्ति पर DatabaseGenerated डेटा एनोटेशन की आवश्यकता होगी:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public string HierarchyString { get; set; } 

अधिक जानकारी के लिए इस लेख को देखें: Entity Framework Code First Computed Properties

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