我有一个类具有枚举类型,指示消息类型是电子邮件或短信。枚举类型定义: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