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有列PermissionIdName。然后是UserPermission带有列和的表和带有UserIdPermissionIdGroupPermissionGroupIdPermissionId

如您所见,Permission是一个实体,用户和权限之间以及组和权限之间存在多对多的关系。但是,为了便于使用UserandGroup对象,我不想要UserandGroup拥有一个(使用ConformistSet<Permission>中的关系类型很容易实现)。ManyToMany我想要UserGroup拥有一组权限名称。通常我会用Element关系类型来实现这一点,除了整个多对多使用连接表问题。

如何映射一组也是多对多的简单类型?

4

1 回答 1

-1

如果我理解正确,我宁愿 Permission 类有用户和组的集合:(注意集合,它不是 System.Collections.Generic 的,因为 nHibernate 将 ISet 理解为 Iesi.Collections.Generic.ISet< >

    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>

类用户和组将没有任何权限集。

于 2014-04-01T07:04:55.640 回答