У меня есть класс с типом enum, указывающим, является ли тип сообщения Email или Sms. Тип 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;
}
}
Однако, когда я пытаюсь сохранить сущность типа 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, если это имеет значение.