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;
}
}
当我尝试将类型为Reminder的实体持久保存到数据库时,我收到以下错误:
System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting the nvarchar value 'Email' to data type int.
支持字段的类型为int
,所以我不确定为什么NHibernate默认会尝试映射字符串表示。我正在使用Fluent NHibernate,相关的映射代码是:
mappings.Override<Reminder>(map =>
{
map.Map(x => x.Type).Column("Type")
});
我很确定NHibernate的默认行为是将枚举映射为整数,那么为什么在这种情况下它不会这样做呢?我正在使用SQL Server 2005,如果这很重要的话。
没有找到相关结果
已邀请:
3 个回复
捕暑句簿姓
先对冈蒲
最后一个约定构建器声明起到了作用。我很好奇为什么Fluent NHibernate的默认设置是将枚举映射为字符串。这似乎没有多大意义。
咳累录酬
。 您可以在此处找到一些其他信息。