2010-10-19 14 views
18

मैं पहली बार इकाई फ्रेमवर्क का उपयोग कर रहा हूं और जानना चाहता हूं कि निम्नलिखित संभव है या नहीं - मैंने अपनी कक्षाएं डीबी से उत्पन्न की हैं, और एक को श्रेणी कहा जाता है।इकाई फ्रेमवर्क में एक कस्टम संपत्ति जोड़ना?

स्पष्ट रूप से इसमें मेरे सभी फ़ील्ड टेबल (आईडी, श्रेणीनाम, सॉर्टऑर्डर इत्यादि ..) हैं लेकिन मैं जानना चाहता हूं कि मैं एक कस्टम प्रॉपर्टी जोड़ सकता हूं जो तालिका में नहीं है, लेकिन वास्तव में एक कस्टम का परिणाम है तरीका।

मैं 'श्रेणीURL' नामक एक नई संपत्ति जोड़ना चाहता हूं जो मूल रूप से 'श्रेणी नाम' संपत्ति एक कस्टम विधि के माध्यम से चलती है और एक हाइफेनेटेड स्ट्रिंग देता है।

मेरा प्रारंभिक विचार जेनरेट श्रेणी श्रेणी से विरासत में है और इस तरह कुछ बना रहा है?

public string CategoryURL 
{ 
    get{ return MyCustomMethod(this.CategoryName) } 
} 

क्या यह सही दृष्टिकोण है? और क्या यह 'श्रेणी नाम' काम करेगा जैसा मुझे लगता है कि इसे चाहिए? असल में अंत परिणाम तब होता है जब मैं 'श्रेणी' की एक सूची लौटाता हूं, मैं चाहता हूं कि यह कक्षा का हिस्सा बन जाए, इसलिए मैं इसे अपने foreach लूप में उपयोग कर सकता हूं।

आशा है कि यह समझ में आता है?

उत्तर

19

आप एक partial वर्ग का उपयोग करना चाहिए:

public partial class Category 
{ 
    public string CategoryURL 
    { 
     get{ return MyCustomMethod(this.CategoryName); } 
    } 
} 

इस तरह this.CategoryName सिर्फ अपेक्षा के अनुरूप काम करेंगे।

यह काम करता है क्योंकि इकाई फ्रेमवर्क कोड जनरेटर द्वारा उत्पन्न कक्षाएं भी partial कक्षाएं उत्पन्न करती हैं। इसका यह भी अर्थ है कि आप अपने आप को परिभाषित आंशिक कक्षाओं को प्रभावित किए बिना डेटाबेस से कक्षाओं को सुरक्षित रूप से पुन: उत्पन्न कर सकते हैं।

+0

बहुत बढ़िया धन्यवाद संपत्ति को [NotMapped] विशेषता जोड़ना चाहिए – leen3o

+0

कि चालाक है! एक तरह से, यह डरावना है क्योंकि यह * भी * चालाक लगता है। क्या हमारे पास यह मानने का कोई कारण है कि माइक्रोसॉफ्ट भविष्य में ईएफ रिलीज में इसे तोड़ सकता है? मुझे लगता है कि मुझे बहुत चिंता करनी चाहिए क्योंकि यह जवाब लगभग चार साल पुराना है और यह सिर्फ मेरे लिए काम करता है! –

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