2012-02-14 548 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