आह! मेरे अद्भुत सहयोगी के पास एक विचार था और यह काम कर गया!
हमारे EF कोड में हमने डालने का प्रयास किया
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EntityClass>().Property(p => p.TIMESTAMP).HasPrecision(6);
}
और फिर DateTime.Now
मिलीसेकंड के साथ डेटाबेस में संग्रहीत हो गया
अपडेट - यह ध्यान देने योग्य है कि मैं इस स्थिति में कैसे आया
"टेस्ट" एप्लिकेशन में मॉडल फर्स्ट के साथ डेटाबेस बनाना
- मेरे ऐप को SQL सर्वर और Oracle दोनों के साथ काम करना है। तो...
- मैंने अपने डेटाबेस को एक ईडीएमएक्स आरेख में डिज़ाइन करके प्रारंभ किया
- एक बार आरेख हो जाने के बाद, मैंने SQL सर्वर के लिए DDL जनरेट किया।
-
किसी कारण से Oracle EF प्रदाता DDL उत्पन्न नहीं कर सका, इसलिए मैं मैन्युअल रूप से SQL सर्वर DDL में परिवर्तन करने के लिए आगे बढ़ा, ताकि यह वाक्य रचनात्मक रूप से सही हो
पहली समस्या - मेरा Oracle DDL टाइमस्टैम्प के बजाय दिनांक का उपयोग कर रहा था। सुनिश्चित करें कि आप टाइमस्टैम्प का उपयोग करते हैं !!! Oracle में डेटटाइम मिलीसेकंड स्टोर नहीं करता है।
वास्तविक समाधान के लिए डेटाबेस से पहले कोड का उपयोग करना
- मैं चाहता था कि ऐप कोड फर्स्ट एप्रोच का उपयोग करे (बस मेरी प्राथमिकता है। मुझे लगता है कि इसे बनाए रखना आसान है)
- इसलिए मैंने SQL सर्वर डेटाबेस से कनेक्ट किया और उस स्कीमा से अपनी सभी कक्षाओं को जेनरेट किया।
- मैंने अपने सभी यूनिट परीक्षण पास कर लिए और फिर Oracle डेटाबेस के साथ इसका परीक्षण करने का निर्णय लिया
- DATE से टाइमस्टैम्प में बदलने के बाद भी, मुझे अभी भी मिलीसेकंड के अंदर जाने में समस्या हो रही थी।
- मैंने एक परीक्षण दृश्य स्टूडियो समाधान में
TIMESTAMP(6)
के साथ एक और कोड प्रथम मॉडल जेनरेट किया है Oracle में टाइप करें, सिवाय जब मैंनेOnModelCreating
. को देखा कोड, इसनेHasPrecision(6)
. के साथ कुछ भी उत्पन्न नहीं किया न ही जेनरेट की गई C# POCO क्लास में प्रॉपर्टी पर कोई डेकोरेटर थे। - मैंने देखा है कि यदि आपके पास
HasPrecision(6)
है आपकेOnModelCreating
. में कोड , कोड पहलेCreateDatabase()
वास्तव में एक Oracle बना देगाTIMESTAMP(6)
. यदि आप नहीं करते हैं, तो Oracle EF प्रदाताDATE
. का उपयोग करेगा
मुझे लगता है कि यदि आप मॉडल प्रथम दृष्टिकोण करते हैं तो आप ईडीएमएक्स आरेख में सटीक मान सेट कर सकते हैं, लेकिन मैंने सुना है कि यह खराब अभ्यास है।