2012-03-12 11 views
0

次のNHibernate HBMが期待通りに機能しますが、クラスが変更される可能性があるためコードが脆弱になりますが、FNHでマッピングを行いたい、ポイント私の中のためFluent Nhibernateを使用したエンティティベースのキーを使用したマッピング辞書

public class PermissionSet : DomainObject 
{ 
    public virtual PermissionSet Defaults { get; set; } 

    public virtual IDictionary<Permission, PermissionType> Permissions { get; set; } 
} 

public class Permission : DomainObject 
{ 
    public virtual string Controller { get; set; } 

    public virtual string Action { get; set; } 
} 

public enum PermissionType 
{ 
    None, 
    Read, 
    Write, 
    Grant 
} 

答えて

0

おかげフィ​​ーロ:

<map name="Permissions" table="PermissionsBySet" cascade="all"> 
    <key column="PermissionSet_id" /> 
    <index-many-to-many class="Picomole.ReadModel.Permission, Picomole.ReadModel" column="PermissionId" /> 
    <element column="PermissionType" type="Picomole.ReadModel.PermissionType, Picomole.ReadModel" not-null="true" /> 
</map> 

を考えると、次のクラス:私はあなたがインデックス多対多を取得し、特にどのように、それは仕事を得るように見えることはできません正しい方向。私がしようとしていた何のために最終的な答えは:

HasManyToMany(x => x.Permissions) 
       .AsEntityMap("PermissionId", "PermissionLevel") 
       .Element("PermissionLevel", x => x.Type<PermissionLevel>()) 
       .Table("PermissionsBySet"); 

そしてので、私はセッション接続がクローズされている程度の奇妙なエラーを持ったいくつかの問題で、私は追加する必要がありました:

   .Fetch.Join() 
       .Not.LazyLoad() 
2
public class PermissionSetMap : ClassMap<PermissionSet> 
{ 
    public PermissionSetMap() 
    { 
     HasManyToMany(ps => ps.Permissions) 
      .AsEntityMap("permissions_id") 
      .Element("PermissionType"); 
    } 
} 
関連する問題