लोग तर्क दे सकते हैं कि यह एक टिप्पणी के रूप में बेहतर अनुकूल है, लेकिन मूल रूप से, यह इसके लिए लंबा है।
और:
आपको मेरी थोड़ी मदद करनी होगी क्योंकि मेरे पास कोई कार्य प्रणाली नहीं है, इसलिए मैं इसे अपने सिर के ऊपर से कर रहा हूं। (और मैं थोड़ी जल्दी में हूं)
सबसे पहले, बिना मैप की गई प्रॉपर्टी के साथ शुरुआत करें:
[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
कुछ अतिरिक्त विकल्पों को उजागर करता है।