2015-09-16 6 views
5

पर विशेषताओं को जोड़ना मैं के साथ काम कर रहा हूं। मेरे पास कंपनी नामक आंशिक वर्ग है जो ईएफ द्वारा उत्पन्न होता है। आंशिक वर्ग लगता है:व्युत्पन्न प्रकार

प्रकार 'BaseModels.Company' पहले से ही 'CompanyName' "के लिए एक परिभाषा शामिल

public partial class Company { 
    public string CompanyId { get; set; } 
    public string CompanyName { get; set; } 
} 

मुझे क्या करना चाहते हैं कंपनी से एक व्युत्पन्न वर्ग बनाने है कि एक अतिरिक्त संपत्ति है।

public class MyCompany : Company { 
    public string UploadName { get; set; } 
} 

लेकिन मैं कस्टम विशेषता वाले आधार प्रकार संपत्ति CompanyName को सजाने के लिए चाहते हैं।

मैं निम्न स्थान पर चला गया: How do I add an attribute to the field of the base class from child class?

कौन सा मेरे सवाल का जवाब है। समस्या यह है कि अगर मैंने बेस क्लास में कंपनी वर्म संपत्ति को "आभासी" के रूप में चिह्नित किया है, तो ईएफ कोड को फिर से उत्पन्न कर सकता है जो मेरी सामग्री को ओवरराइड करेगा।

मैं एक आंशिक वर्ग को परिभाषित करने की कोशिश की, लेकिन वी.एस. 2013 में शिकायत की है जब मैं जोड़ने की कोशिश की:

public partial class Company { 
    [Renderer("html")] 
    public virtual string CompanyName { get; set; } 
} 

करते हुए कहा कि संपत्ति का नाम पहले से ही अस्तित्व में है।

मैं इस बाधा के आसपास कैसे जाऊं?

+0

'क्या VS2013 के बारे में शिकायत करता है ???' .. भी जहां आप इसे में अधिभावी कर रहे हैं बाल वर्ग ..? – MethodMan

+0

विजुअल स्टूडियो से उत्पन्न त्रुटि संदेश का कहना है कि "टाइप 'बेसमोडल्स.कंपनी' में पहले से ही 'कंपनीनाम' की परिभाषा है। यह एक आंशिक वर्ग से है जिसे मैंने उसी परियोजना में परिभाषित करने की कोशिश की थी। – coson

+0

यह ईएफ डेटाबेस पहले है ..? यदि ऐसा है तो यहां चरण-दर-चरण पढ़ने के लिए एक लिंक है http://stackoverflow.com/questions/19021991/entity-framework-डेटा- फर्स्ट-how-to-alter-entities-to-make-them-derive-from -a – MethodMan

उत्तर

1

आप आंशिक श्रेणी परिभाषित संपत्ति के साथ नहीं कर सकते जो पहले से मौजूद है। आप MetadataTypeAttribute का उपयोग करने के लिए आवश्यक मौजूदा प्रॉपर्टी पर विशेषता जोड़ते हैं। आंशिक वर्ग बनाएँ:

[MetadataType(typeof(CompanyMetadata))] 
public partial class Company { } 

और वांछित विशेषता के साथ अपनी संपत्ति के साथ अपनी परियोजना के लिए मेटाडेटा वर्ग जोड़ें:

public class CompanyMetadata 
{ 
    [Renderer("html")] 
    public string CompanyName { get; set; } 
} 
0

कंपनी को एक सार श्रेणी बनाएं। फिर कस्टम विशेषता जोड़ने के लिए कंपनी नाम के साथ ओवरराइड कीवर्ड का उपयोग करें। आप अपलोडनाम भी जोड़ सकते हैं।

+0

लेकिन कंपनी वर्ग इकाई फ्रेमवर्क द्वारा उत्पन्न होता है। मुझे यकीन नहीं है कि यह समस्या को कैसे हल करेगा। – coson

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