2012-01-24 6 views
0

私は3つのテーブルUsers、AccessLevels、Rolesを持っています。私のユーザークラスはpublic virtual Dictionary<Role,AccessLevel> Roles {get; set;}、 ロールクラスはpublic virtual Dictionary<User,AccessLevel> Users {get;set;}ですか?そのような辞書をどのようにマッピングに表現すべきか?あなたが与えられた場合のhbm.xmlマッピング辞書

<map name="Roles" table="UserRoleAccessLevel"> 
    <key column="user_id" /> 
    <index-many-to-many class="Role" column="role_id" /> 
    <many-to-many class="AccessLevel" column="accesslevel_id" /> 
</map> 

<map name="Users" table="UserRoleAccessLevel"> 
    <key column="role_id" /> 
    <index-many-to-many class="User" column="user_id" /> 
    <many-to-many class="AccessLevel" column="accesslevel_id" /> 
</map> 

答えて

0

はかかわらず、今

アップデートを、それをテストすることはできませんテーブルの構造、特にAccessLevelsテーブルテーブルの構造を推測できる限り、このマッピングをお勧めします。

<class name="User" table="Users"> 
    <id name="Id" column="user_id"> 
     <generator class="native" /> 
    </id> 

    <property name="Name" column="user_name" not-null="true" /> 

    <map name="Roles" table="AccessLevels" cascade="save-update"> 
     <key column="user_id" /> 
     <map-key-many-to-many column="role_id" class="Role" /> 
     <one-to-many class="AccessLevel"/> 
    </map> 
</class> 

<class name="Role" table="Roles"> 
    <id name="Id" column="role_id"> 
     <generator class="native" /> 
    </id> 

    <property name="Name" column="user_name" not-null="true" /> 
</class> 

<class name="AccessLevel" table="AccessLevels"> 
    <id name="Id" column="Id"> 
     <generator class="native" /> 
    </id> 

    <property name="Level" column="level" not-null="true" /> 
    <many-to-one name="User" column="user_id" not-null="true" cascade="save-update" /> 
    <many-to-one name="Role" column="role_id" not-null="true" cascade="save-update" /> 
</class> 
+0

ありがとうございました。しかし、私はFluentNHibernateに精通していません。私はマッピングファイルでこれをどうやって行うことができますか? – k0lpak

0

にそれは非常にいいだろう:それは

HasManyToMany(user => user.Roles) 
    .Table("UserRoleAccessLevel") 
    .AsEntityMap("role_id") 
    .KeyColumn("user_id"); 

HasManyToMany(role => role.Users) 
    .Table("UserRoleAccessLevel") 
    .AsEntityMap("user_id") 
    .KeyColumn("role_id"); 

ようになりFluentNhibernateで

関連する問題