NHibernate, SQL Server - enum to int mapping

У меня есть класс с перечисляемым типом, указывающим, является ли тип сообщения электронной почтой или SMS-сообщением. Определен тип перечисления:

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.

Поле поддержки имеет type int , поэтому я не уверен, почему NHibernate пытается сопоставить строковое представление по умолчанию. Я использую Fluent NHibernate, и соответствующий код сопоставления:

mappings.Override<Reminder>(map =>
{
     map.Map(x => x.Type).Column("Type")
});

Я почти уверен, что по умолчанию NHibernate отображает перечисления как целые числа, так почему в этом случае этого не происходит? Я использую SQL Server 2005, если это важно.

6
задан Chris 11 April 2011 в 21:02
поделиться