NHibernate を使用した列挙型のコレクションのマッピング
具体的には、マッピングに属性を使用します。
現在、私はコレクションをタイプ Int32 としてマッピングする作業を行っており、NH がそれを処理しているように見えますが、それは正確には理想的ではありません。
マップしようとしている列挙型のコレクションをマップしようとすると、「型を特定できません」というエラーが表示されます。
クラスを次のように定義すると言った投稿を見つけました
public class CEnumType : EnumStringType {
public CEnumType() : base(MyEnum) { }
}
次に、列挙型をCEnumTypeとしてマップしますが、これにより「CEnumTypeがマップされていません」または同様の結果が得られます。
それで、誰かがこれを行った経験がありますか?
とにかく、例を示すための単純な参照コードのスニペットです
[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;}
}
}
では、この列挙型のコレクションを実際の列挙型としてマップするための正しい属性を誰かが取得しましたか? それらが int ではなく文字列としてデータベースに格納されていれば本当にいいのですが、完全に必要というわけではありません。