2012-03-19 7 views
8

कोड फर्स्ट का उपयोग कर कक्षा में स्ट्रिंग को परिभाषित करते समय, जेनरेट किए गए डेटाबेस में कॉलम के लिए डिफ़ॉल्ट नल की अनुमति देता है।एंटीटी फ्रेमवर्क कोड द्वारा बनाए गए कॉलम में अन्य डेटा प्रकारों के विरुद्ध स्ट्रिंग्स के लिए शून्यता पहले

MyString (nvarchar (अधिकतम), नल)

मैं [Required] विशेषता का उपयोग करके या .IsRequired का उपयोग करके यह करने के लिए "रिक्त नहीं" बदल सकते हैं:

public string MyString { get; set; } 

इस स्तंभ बनाता है() विधि फ्लुएंट एपीआई में।

अन्य डेटा प्रकारों के लिए डिफ़ॉल्ट नल की अनुमति नहीं देता है।

मींट (पूर्णांक, रिक्त नहीं)

MyDateTime (दिनांक, रिक्त नहीं)

MyFloat (असली, रिक्त नहीं):

public int MyInt { get; set; } 
    public DateTime MyDateTime { get; set; } 
    public float MyFloat { get; set; } 
    public decimal MyDecimal { get; set; } 
    public bool MyBool { get; set; } 

इन स्तंभों बनाता है

MyDecimal (दशमलव (18,2), नहीं अशक्त)

MyBool (बिट, रिक्त नहीं)

मैं धाराप्रवाह एपीआई में .IsOptional() विधि का उपयोग कर nulls अनुमति देने के लिए इन बदल सकते हैं । क्या कोई विशेषता है जो वही काम करेगी?

मैं कक्षा परिभाषा में डेटा प्रकारों को भी नल (int ?, डेटटाइम ?, इत्यादि) की अनुमति देने के लिए बदल सकता हूं जिसके परिणामस्वरूप कॉलम डेटाबेस में नल की अनुमति देते हैं।

स्ट्रिंग के लिए डिफ़ॉल्ट रूप से नल को अनुमति देने के लिए तर्क क्या है लेकिन अन्य डेटा प्रकारों के लिए नहीं?

उत्तर

5

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

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

इसके विपरीत, एक अशक्त स्ट्रिंग एक System.String वस्तु का एक उदाहरण और एक अशक्त स्ट्रिंग परिणामों पर एक विधि कॉल करने के किसी भी प्रयास का उल्लेख नहीं करता: Here is the MDSN article on strings, यदि आप अशक्त के लिए खोज, तो आप इस लाइन देखेंगे एक NullReferenceException

हालांकि, जब तक कोई int निरर्थक न हो, तब तक यह कभी भी NullReferenceException नहीं फेंक देगा क्योंकि यह हमेशा एक डिफ़ॉल्ट मान होना चाहिए।

1

यह जोड़ने के लिए उपयोगी है कि न केवल स्ट्रिंग ईएफ कोड पहले, बल्कि कक्षाओं में भी शून्य हैं।

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