2012-10-12 11 views
10

पर आवश्यक गुण मैं एंटीटी फ्रेमवर्क में कॉम्प्लेक्स टाइप पर [Required] विशेषताओं को परिभाषित करना चाहता हूं। उदाहरण के लिए, मेरे पास इकाई वैकल्पिक Address है। पता इकाई में PostCode संपत्ति आवश्यक है।वैकल्पिक इकाई फ्रेमवर्क कॉम्प्लेक्स प्रकार

[ComplexType] 
public class Address { 
    public string Address1 { get; set; } 
    [Required] 
    public string PostCode { get; set; } 
} 

public class Customer { 
    public int CustomerId {get;set;} 
    public Address Address {get;set;} 
} 

मैं नहीं है एक अलग इकाई के रूप में मेरे परिसर प्रकार संग्रहीत करना चाहते हैं (मैं वास्तव में पते का उपयोग नहीं कर रहा हूँ, यह सिर्फ समस्या का एक आसान उदाहरण)। मैं Customer.Address रिक्त नहीं छोड़ सकते क्योंकि इस त्रुटि देता है:

Null value for non-nullable member. Member: 'Address'.

अगर मैं एक खाली पता इकाई की आपूर्ति, सत्यापन आवश्यक विशेषता की वजह से पोस्टकोड मैदान पर विफल रहता है।

क्या यह हासिल करने का कोई तरीका है? मैं ईएफ 5/नेट 4.5 का उपयोग कर रहा हूं।

उत्तर

8

जटिल प्रकार के साथ यह संभव नहीं है। यदि आप इसे निरर्थक बनाना चाहते हैं तो आपको एक पता इकाई बनाना होगा।

जटिल प्रकार के साथ क्या ईएफ करेगा एक ही तालिका में गुणों को मैप करें - जो आपके जैसा लगता है।

इस कारण से

- अपने उदाहरण के लिए अपने स्कीमा इस प्रकार दिखाई देगा: Address_PostCode के लिए एक गैर-व्यर्थ स्तम्भ के साथ

enter image description here

, यह डेटाबेस में मान्य नहीं है के बाद से वहाँ एफई के लिए एक तरीका नहीं है अपनी ऑब्जेक्ट के बिना पता, और एक पोस्टकोड के बिना पंक्ति बनाएं।

+0

वास्तव में एक अलग इकाई के बिना ऐसा करने की उम्मीद कर रहा था। मान लीजिए मुझे सत्यापन थोड़ा अलग करना होगा। वैसे भी मेरे संदेह की पुष्टि के लिए धन्यवाद! – Richard

+0

यह ईएफ की एक बहुत ही खराब विशेषता है। किसी पता ऑब्जेक्ट पर प्रतिबिंब का उपयोग करके, ईएफ आसानी से काम कर सकता है कि टेबल निर्माण पर कौन से कॉलम बनाना है। इसे इकाई से पता लगाने के लिए पते का एक उदाहरण होने की आवश्यकता नहीं है। और इकाई निर्माण/अद्यतन पर, यदि कॉम्प्लेक्स टाइप संपत्ति शून्य थी, तो डेटाबेस में उन स्तंभों को शून्य में सेट करने के बारे में इतना कठिन क्या है? यह ईएफ आईएमओ के अगले संस्करण में एक आसान सुविधा जोड़ा जाना चाहिए। – Ibraheem

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