Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

EF Core के साथ MySQL जीरो डेट को हैंडल करना

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

और:

आपको मेरी थोड़ी मदद करनी होगी क्योंकि मेरे पास कोई कार्य प्रणाली नहीं है, इसलिए मैं इसे अपने सिर के ऊपर से कर रहा हूं। (और मैं थोड़ी जल्दी में हूं)

सबसे पहले, बिना मैप की गई प्रॉपर्टी के साथ शुरुआत करें:

[NotMapped]
public DateTime ExpiryDate { get; set; }

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

उदाहरण के लिए, (जो एक बुरा उदाहरण है क्योंकि हमें कहीं न कहीं इकाई में संदर्भ की आवश्यकता है ):

[NotMapped]
public DateTime? ExpiryDate 
{
    get
    {
         //of course you'll need some caching here
         var s = context.Database.SqlQuery<string>("query to select datetime as string");
         //additional logic to determine validity:
         if (s == "0000-00-00")
             return null;
         //else:
         //do the conversion
    }
 }

यहाँ मूल प्रश्न; ईएफ ढांचे के भीतर आप इसका समर्थन करने के लिए कितनी दूर जाना चाहते हैं? क्या आपको केवल EF आदि के परिवर्तन ट्रैकर का उपयोग करके इसे पढ़ने या लिखने की आवश्यकता है?

अन्य संभावनाएं हैं, उदाहरण के लिए, एक कास्ट करें डेटा प्राप्त करने और इसे आगे संसाधित करने के लिए SQL के भीतर ही nvarchar करने के लिए।

शायद ModelBuilder कुछ अतिरिक्त विकल्पों को उजागर करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल जॉइन में डुप्लिकेट रिकॉर्ड

  2. उपयोगकर्ता पंजीकरण और ईमेल सत्यापन PHP और MySQL

  3. मैं लेवेनशेटिन दूरी और टाइपो के लिए खाते का उपयोग करके समान तारों के लिए थ्रेसहोल्ड कैसे बना सकता हूं?

  4. MySQL:परिणामों के लिए बीच की स्थिति में तिथियों का उपयोग करना

  5. डेटा मॉडलिंग की खोज करना (एक समझदार डेटाबेस को एक साथ कैसे जोड़ना है)