कभी-कभी इकाई फ्रेमवर्क कोड का उपयोग करते समय, डिफ़ॉल्ट सम्मेलन आपके द्वारा इच्छित डेटाबेस प्रकार नहीं बनाते हैं। उदाहरण के लिए डिफ़ॉल्ट रूप से System.DateTime
की एक संपत्ति DateTime
प्रकार का डेटाबेस कॉलम बनाता है। यदि आप चाहते हैं कि datetime2
(DateTime
प्रकार है जिसमें समय क्षेत्र और डेलाइट सेविंग टाइम के साथ कोई समस्या नहीं है) तो क्या करना है?इकाई फ्रेमवर्क कोड पहले: डेटटाइम 2 के लिए कौन सा डेटाटाइप विशेषता है?
DataTypeAtrribute
का उपयोग कर डेटा एनोटेशन के साथ आवश्यक डेटाबेस प्रकार निर्दिष्ट करना संभव है। DataTypeAttribute के रचनाकारों में से एक पैरामीटर DataType Enumeration स्वीकार करता है। तो एक कुछ की तरह निर्दिष्ट कर सकते हैं:
[DataType(DataType.DateTime)]
public DateTime DateOfBirth {get; set;}
डेटा प्रकार गणना प्रकार प्रकार के एक बहुत कुछ शामिल है, लेकिन यह DateTime2
के लिए एक मूल्य याद आ रही है।
एक और दृष्टिकोण फ्लुएंट एपीआई का उपयोग करेगा। विधि DBContext.OnModelCreating में एक DateTime2
बनाएँ:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().Property(p => p.BirthDate)
.HasColumnType("datetime2");
}
DataTypeAttribute एक second constructor that accepts a string है। इस स्ट्रिंग को
डेटा फ़ील्ड से संबद्ध करने के लिए कस्टम फ़ील्ड टेम्पलेट का नाम परिभाषित किया गया है।
तो एक ग्रहण करेंगे कि निम्नलिखित एक datetime2 बनाने के लिए पर्याप्त होगा:
[DataType("datetime2")]
public DateTime DateOfBirth {get; set;}
ओह, यह काम नहीं करता। बनाए गए कॉलम में अभी भी DateTime
प्रारूप है।
प्रश्न: डेटाटाइम 2 बनाने के लिए कन्स्ट्रक्टर में किस स्ट्रिंग का उपयोग करना है?