使用 NHibernate 映射枚举集合
具体来说,使用 Attributes 进行映射。
目前我有这个工作将集合映射为 Int32 类型,NH 似乎可以处理它,但它并不完全理想。
尝试将集合映射为我尝试映射的枚举类型时,我收到的错误是“无法确定类型”。
我发现一个帖子说将一个类定义为
public class CEnumType : EnumStringType {
public CEnumType() : base(MyEnum) { }
}
然后将枚举映射为 CEnumType,但这会给出“CEnumType is not mapped”或类似的东西。
那么有没有人有这样做的经验?
所以无论如何,只是一个简单的参考代码片段来举一个例子
[NHibernate.Mapping.Attributes.Class(Table = "OurClass")]
public class CClass : CBaseObject
{
public enum EAction
{
do_action,
do_other_action
};
private IList<EAction> m_class_actions = new List<EAction>();
[NHibernate.Mapping.Attributes.Bag(0, Table = "ClassActions", Cascade="all", Fetch = CollectionFetchMode.Select, Lazy = false)]
[NHibernate.Mapping.Attributes.Key(1, Column = "Class_ID")]
[NHibernate.Mapping.Attributes.Element(2, Column = "EAction", Type = "Int32")]
public virtual IList<EAction> Actions
{
get { return m_class_actions; }
set { m_class_actions = value;}
}
}
那么,任何人都得到了正确的属性让我将这个枚举集合映射为实际的枚举?如果它们也作为字符串而不是整数存储在数据库中,那就太好了,但这并不是完全必要的。