我有一個類具有枚舉類型,指示消息類型是電子郵件或短信。枚舉類型定義:NHibernate,SQL Server的 - 枚舉到int映射
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的默認行爲是映射枚舉爲int,那麼,爲什麼在此情況下,這樣做?如果有問題,我正在使用SQL Server 2005。
Email是Type屬性的字符串值。 Nhibernate應該試圖存儲它作爲整數值1,但它試圖存儲字符串'電子郵件',而不是,因此錯誤。我不知道它爲什麼這樣做,雖然... – Chris 2011-04-11 21:10:23
http://stackoverflow.com/questions/439003/how-do-you-map-an-enum-as-an-int-value-with-fluent- nhibernate – dotjoe 2011-04-11 21:37:01
或http://stackoverflow.com/questions/1483044/mapping-enum-with-fluent-nhibernate – 2011-04-12 08:51:27