還有一些關於使用ActiveRecord將數據映射到數據庫的文章,但是他們都沒有回答我的問題。我有一個名爲OrderState枚舉:使用NHibernate/Castle將枚舉映射到數據庫ActiveRecord
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小時以來..
邁克
不,您必須重寫SqlType。否則,它將插入的SQL語句爲: INSERT INTO TestTable(State,Id)VALUES('Preview':: text, '9dea2a34-566a-45ea-84fd-24b86403ef5b':: uuid) – Mike 2010-06-07 10:56:06
@Mike:ok ,當您使用數據庫枚舉類型時,有必要覆蓋它。我相應地改變了我的答案。 – 2010-06-07 13:22:33