2011-06-14 18 views
5

मैं मौजूदा SQL डेटाबेस स्कीमा से ईएफ 4.1 कोड पहले मॉडल बनाना चाहता हूं और मुझे आश्चर्य है कि संपत्ति डेटा के कुछ प्रकार के रूपांतरण करना संभव है या नहीं।ईएफ 4.1 कोड में संपत्ति प्रकार रूपांतरण कैसे करें पहले

उदाहरण के लिए, मैं है एक मौजूदा टेबल "फू" इस तरह एक क्षेत्र होने:

isTrue char(1) 'valid values are "Y" or "N" 

मेरी एफई 4.1 संहिता सबसे पहले मॉडल में, मैं की तरह एक बूलियन प्रकार में इस क्षेत्र को परिवर्तित करना चाहते हैं:

public class Foo 
{ 
    public bool isTrue { get; set; } 
} 

क्या यह संभवतः ईएफ 4.1 कोड में संभव है डीबीसीएन्टेक्स्ट को विस्तारित करके या मॉडल या एंटीटी टाइप कॉन्फ़िगरेशन <> उप-वर्ग में अतिरिक्त कोड जोड़कर? यदि हां, तो क्या कोई मुझे एक लिंक या कुछ दस्तावेज को इंगित कर सकता है कि इसे कैसे किया जाए? डेटाबेस फ़ील्ड को रिफैक्टर करना इस समय संभव नहीं है।

उत्तर

2

ईएफ रूपांतरण करना संभव नहीं है।

एक संभावित समाधान, एफई bool प्रॉपर्टी को नकारने कर रहा है, और एक आवरण संपत्ति है कि "Y" को true और "N" को false धर्मान्तरित का उपयोग कर।


यदि आपको आमतौर पर इस तरह की लचीलापन की आवश्यकता होती है, तो मेरा सुझाव है कि आप अधिक परिपक्व ढांचे को देखें।

उदाहरण के लिए, एनएचबर्ननेट, YesNo मैपिंग प्रकार के रूप में निर्दिष्ट करके, बॉक्स के बाहर इस आवश्यकता का समर्थन करता है।

4

गैर-मैप किए गए फ़ील्ड का उपयोग करना संभव है जो सार्वजनिक क्षेत्र का उपयोग करता है और फिर आप कोड को पहले से सहेज सकते हैं और पुनर्प्राप्त कर सकते हैं और यहां मैपिंग कर सकते हैं। यह होगा, प्रत्येक क्षेत्र या परिवर्तित किया ज़ाहिर है, जरूरत है कि के लिए किया जा करने के लिए एक सहायक विधि और निम्नलिखित समाधान

internal string YesNo { get; set; } 

private bool _bYesNo; 
[NotMapped] 
public bool bYesNo 
{ 
    get{return (YesNo == "Y") ? true : false;} 
    set{_bYesNo = value;YesNo = (bYesNo) ? "Y" : "N";} 
} 
+8

मैं आपको वोट देने जा रहा था और फिर मैंने हंगेरी नोटेशन देखा। शाम बाहर : पी –

1

मैं एक ही समस्या थी के साथ सरलीकृत बाहर मेरे लिए महान काम किया की जरूरत है !!

Entity Framework and Oracle Boolean

मेरी कोड में एक मेज क्षेत्र सिर्फ एक सामान्य बूलियन की तरह दिखता है, लेकिन डेटाबेस में यह एक चार है (1): एफई मॉडल यह "Y" या "एन" में बदल जाएगा और बचाता है यह डेटाबेस के लिए। मैं ग्रिड के लिए चार (36) में एक ही चाल करता हूं।

+1

लिंक टूटा हुआ है। –

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