मेरे पास एक कक्षा है जिसमें एक एनम प्रकार है जो इंगित करता है कि संदेश का प्रकार ईमेल या एसएमएस है या नहीं। enum प्रकार परिभाषित किया गया है:एनएचबर्ननेट, एसक्यूएल सर्वर - इंट मैपिंग
public enum ReminderType
{
Email = 1,
Sms = 2
}
वर्ग कि इस प्रकार का इस्तेमाल करता है लगता है:
public class Reminder : EntityBase
{
public virtual string Origin { get; set; }
public virtual string Recipient { get; set; }
public virtual ReminderType Type { get; set; }
public virtual Business Business { get; set; }
public virtual DateTime Created { get; set; }
public Reminder()
{
Created = DateTime.UtcNow;
}
}
जब मैं फिर भी डेटाबेस के लिए प्रकार अनुस्मारक की एक इकाई बने रहने की कोशिश करते हैं, मैं निम्नलिखित त्रुटि मिलती है:
System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting the nvarchar value 'Email' to data type int.
समर्थन फ़ील्ड प्रकार int
की है, इसलिए मुझे यकीन है कि क्यों NHibernate डिफ़ॉल्ट रूप से स्ट्रिंग प्रतिनिधित्व मैप करने के लिए कोशिश कर रहा है नहीं कर रहा हूँ। मैं धाराप्रवाह NHibernate का उपयोग कर रहा है, और प्रासंगिक मानचित्रण कोड है:
mappings.Override<Reminder>(map =>
{
map.Map(x => x.Type).Column("Type")
});
मैं यकीन है कि NHibernate के डिफ़ॉल्ट व्यवहार को ints के रूप में enums मैप करने के लिए है हूँ, इसलिए क्यों यह इस मामले में ऐसा नहीं कर रहा है? यदि यह मायने रखता है, तो मैं SQL सर्वर 2005 का उपयोग कर रहा हूं।
ईमेल प्रकार संपत्ति का स्ट्रिंग मान है। निबर्ननेट को इसे पूर्णांक मान 1 के रूप में संग्रहीत करने का प्रयास करना चाहिए, लेकिन यह इसके बजाय स्ट्रिंग 'ईमेल' को स्टोर करने का प्रयास कर रहा है, इसलिए त्रुटि। मुझे यकीन नहीं है कि यह क्यों कर रहा है ... – Chris
http://stackoverflow.com/questions/439003/how-do-you-map-an-enum-as-an-int-value-with-fluent- nhibernate – dotjoe
या http://stackoverflow.com/questions/1483044/mapping-enum-with-fluent-nhibernate –