0

NHibernate Conformist マッピングを使用しています。ManyToManyOneToManyElement、およびComponentリレーション タイプを使用して、さまざまなコレクション プロパティの複雑なマッピングを既に作成しています。しかし、私は今日、私を困惑させるものに出くわしました。

public class Permission
{
    public virtual long PermissionId { get; set; }
    public virtual string Name { get; set; }
}

public class User
{
    ...
    public virtual Set<string> Permissions { get; set; }
}

public class Group
{
    ...
    public virtual Set<string> Permissions { get; set; }
}

テーブルPermissionには列PermissionIdとがありますName。次に、列と列を持つテーブルと、UserPermissionUserIdと列を持つテーブルがあります。PermissionIdGroupPermissionGroupIdPermissionId

ご覧のとおり、Permissionはエンティティであり、ユーザーと権限の間、およびグループと権限の間には多対多の関係があります。Userただし、 andオブジェクトを使いやすくするために、andを持ちGroupたくありません( Conformistのリレーション タイプを使用すると簡単に実現できます)。私は一連の権限を持ちたいと思っています。通常、多対多を使用する結合テーブルの問題を除いて、関係タイプでこれを達成します。UserGroupSet<Permission>ManyToManyUserGroupElement

多対多でもある単純型のコレクションをマップするにはどうすればよいですか?

4

1 に答える 1

-1

私があなたを正しく理解していれば、むしろ Permission クラスに User と Groups のセットを持たせたいと思います: >

    public virtual Iesi.Collections.Generic.ISet<User> Users { get; set; }
    public virtual Iesi.Collections.Generic.ISet<Group> Groups { get; set; }

パーミッションのマッピングでは:

    <set name="Users" table="PermissionUser" lazy="true">
    <key column="PermissionId"/>
    <many-to-many class="User" column="UserId" />
    </set>

    <set name="Groups" table="PermissionGroup" lazy="true">
    <key column="PermissionId"/>
    <many-to-many class="Group" column="GroupId" />
    </set>

クラス User および Group には、権限のセットはありません。

于 2014-04-01T07:04:55.640 に答える