2010-10-30 9 views
5

मेरे पास एंटिटी फ्रेमवर्क और SQL सर्वर 2008 डेटाबेस का उपयोग कर एक एमवीसी ऐप है। मैंने अपना डेटा मॉडल जेनरेट करने के लिए ईएफ विज़ार्ड का इस्तेमाल किया।डेटाटाइम 2 और प्रदाता मेनिफेस्ट टोकन एंटिटी फ्रेमवर्क

मेरे पास एक मानक DateTime कॉलम के साथ एक SQL सर्वर तालिका है। ईएफ मॉडल System.DateTime का उपयोग कर रहा है।

लेकिन जब मैं इस दिनांक समय स्तंभ के लिए एक मूल्य निर्दिष्ट किए बिना, अपने आवेदन से इस तालिका में एक नया रिकार्ड डालने के लिए प्रयास करते हैं, मैं त्रुटि मिलती है:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

मैं थोड़ा Google पर और पाया कि लोग हैं edmx को संपादित करना और ProviderManifestToken बदलना। जाहिर है कि ओवरराइट किया जाएगा, तो क्या इसे ठीक करने के लिए एक और स्थायी तय या तरीका है?

उत्तर

3
समस्या

है, क्योंकि जैसे तुमने कहा, तुम इकाई जो यह 0001-01-01 'जो datetime के लिए सीमा से बाहर निश्चित रूप से है के लिए डिफ़ॉल्ट का कारण बनता है पर कि दिनांक समय प्रॉपर्टी के लिए किसी मान सेट नहीं कर रहे हैं SQL सर्वर पर कॉलम। डेटाटाइम प्रकार दिनांक सीमा जनवरी 1, 1753, 31 दिसंबर, 99 99 के माध्यम से है।

इस का समाधान करने के लिए, आप या तो इसे एसक्यूएल सर्वर को भेजने से पहले यह है कि संपत्ति के लिए सीमा मूल्य में निर्दिष्ट या datetime2 जो 9999- के माध्यम से 0001-01-01 की दिनांक सीमा है करने के लिए अपने डीबी स्तंभ प्रकार बदलना होगा 12-31

+0

यदि मैं स्पष्ट रूप से किसी इकाई संपत्ति के लिए कोई मान निर्धारित नहीं करता हूं, तो क्या ईएफ एक शून्य डालना नहीं चाहिए? – Blackcoil

+1

नहीं, यह डिफ़ॉल्ट रूप से डिफ़ॉल्ट (दिनांक समय) पर सेट हो जाएगा। कृपया ध्यान दें कि डेटटाइम एक * वैल्यू टाइप * है और शून्य नहीं हो सकता है, हालांकि डेटटाइम? कर सकते हैं। ईएफ में कई तरीके हैं कि आप इस उपयोग के आधार पर इस संपत्ति (और मूल रूप से किसी भी इकाई की संपत्ति) को स्वचालित रूप से पॉप्युलेट कर सकते हैं। –

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