2012-12-14 17 views
5

मुझे अपनी कक्षा में एक नामुमकिन enum नक्शा करने की जरूरत है, लेकिन अपवाद मिल रहा है।फ्लुएंट एनएचबेर्नेट मैपिंग नलबल एनम

NHibernate.PropertyAccessException: अमान्य कास्ट (संपत्ति प्रकार के मिलान के लिए अपने मैपिंग की जांच करें); App.Model.Stock ---> System.InvalidCastException का सेटटर: निर्दिष्ट कास्ट मान्य नहीं है।

मैंने इस मुद्दे को एक विशिष्ट संपत्ति तक सीमित कर दिया है, जिसका मैं नीचे वर्णन करता हूं।

यह पहले here का उत्तर दिया गया था, लेकिन समाधान उस पृष्ठ से लिंक है जो अब मौजूद नहीं है।

यहाँ मेरी कोड है, जो मैं केवल कुछ हिस्सों के साथ मैं चिंतित हूँ शामिल करने के लिए कम कर दिया है।

public class StockMap : ClassMap<Stock> 
{ 
    Map(x => x.Color).CustomType<int>(); 
} 

मैं एक ही परिणाम के साथ निम्न में से सभी की कोशिश की है:

public enum eColor 
{ 
    Red, 
    Blue 
} 

public class Stock 
{ 
    public virtual eColor? Color { get; protected set; } 
} 

यहाँ मेरी मानचित्रण (नीचे छीन) है

Map(x => x.Color).CustomType<int>(); 
Map(x => x.Color).CustomType<int?>(); 
Map(x => x.Color).CustomType<int>().Nullable(); 
Map(x => x.Color).CustomType<int?>().Nullable(); 

यह एक बग एक लंबे होने के कारण समय पहले और एक कामकाज था। मैं फ्लुएंट 1.3.0.0 और एनएचबेर्नेट 3.3.1.4000 का उपयोग कर रहा हूं।

उत्तर

8

आप CustomType < टी >(), उदा enum प्रकार निर्दिष्ट करना चाहिए CustomType <eColor>()। यह आपको डेटाबेस में पूर्णांक दे देंगे।

+0

एक ही समस्या थी, इस काम किया, धन्यवाद! – iamserious

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