2012-02-14 251 views
0

我开始使用nHibernate代码映射,并且我被困在映射枚举集合上。枚举集合的nHibernate代码映射

(注意,这个问题类似于Mapping collection of enum in NHibernate,但不同之处在于我想用代码映射到地图。)

我有一个具有“权限”,该权限的集合实体“角色”是一个枚举。

这个旧的XML映射:

<set name="Permissions" cascade="none" table="role_permissions"> 
    <key column="role_id" /> 
    <element column="permission_id" type="MyApp.Permissions, MyApp" /> 
</set> 

而且我想在这样的代码映射,但我得到一个异常:

Set(x => x.PermissionCollection, m => { }, 
    r => r.Element(e => 
    { 
    e.Column("permission_id"); 
    e.Type<Permissions>(); 
    })); 

抛出异常是

Expected type implementing IUserType or IType. 
Parameter name: persistentType 

回答

1

试试这个

Set(x => x.PermissionCollection, m => 
{ 
    m.Key(km => km.Column("role_id")); 
    m.Table("role_permissions"); 
}, 
r => r.Element(e => e.Column("permission_id"))); 
+1

嗯,这让我超过了初始配置,但是当试图使用Role实体时,我得到一个“Invalid Cast”异常。这可能是一个不同的问题,我不确定哪个属性导致抛出异常。 – quip 2012-02-14 19:23:58

+0

你能否提供你的角色类? – hival 2012-02-14 19:28:14

+0

角色类别:http://pastie.org/3382893 – quip 2012-02-14 19:31:11