Есть несколько других постов по сопоставлению Enums с БД с ActiveRecord, но ни один из них не отвечает на мой вопрос. У меня есть перечисление с именем OrderState:
public enum OrderState {InQueue, Ordered, Error, Cancelled}
И у меня есть следующее свойство в таблице:
[Property(NotNull = true, SqlType = "orderstate", ColumnType = "DB.EnumMapper, WebSite")]
public OrderState State
{
get { return state; }
set { state = value; }
}
И у меня есть следующий тип класса:
public class EnumMapper : NHibernate.Type.EnumStringType<OrderState>
{
public EnumMapper()
{
}
public override NHibernate.SqlTypes.SqlType SqlType
{
get
{
return new NHibernate.SqlTypes.SqlType(DbType.Object);
}
}
}
Теперь это действительно работает так, как я хочу, но проблема в том, что у меня есть тонны перечислений, и я не хочу создавать класс EnumMapper для каждого из них. Разве нет способа просто сказать ActiveRecord использовать DbType.Object для любого перечисления? Кажется, он либо хочет быть целым числом, либо строкой, но не более того. Этот сводит меня с ума в течение последних 2 часов ..
Mike