NHibernate,HiLo和多对多关联

时间:2011-06-29 16:30:44

标签: nhibernate hilo

我有两个实体,角色权限,每个实体都在数据库中有表格,并使用HiLo算法正确设置ID生成。这很好用。但是,数据库中还有一个表 ROLE_PERMISSION_ASSIGNMENT ,只包含前两个表的外键,将实体绑定在一起。该表在我的应用程序中没有实体对应物。

角色实体的映射如下所示:

public class RoleMap : ClassMap<Role>
{
    public RoleMap()
    {
        Table("\"ROLE\"");
        LazyLoad();            
        Id(x => x.Id, "id").GeneratedBy.HiLo("hilo", "hilo_role", "50");           
        Map(x => x.Name).Column("name");
        HasManyToMany<Permission>(x => x.Permissions)
           .Table("\"ROLE_PERMISSION_ASSIGNMENT\"")
           .ParentKeyColumn("fk_id_role")
           .ChildKeyColumn("fk_id_permission")
           .Cascade.None();
    }
}

由于我没有 ROLE_PERMISSION_ASSIGNMENT 表的实体,我无法指定其ID应该生成的方式,因此在保存角色时(包含一些<数据库中的strong>权限),在 ROLE_PERMISSION_ASSIGNMENT 中创建相应条目时失败,因为它不提供主键。

有没有办法告诉NHibernate使用HiLo算法为 ROLE_PERMISSION_ASSIGNMENT 生成ID?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您需要将该关联映射为idbag,这完全符合您的要求(请参阅http://www.nhforge.org/doc/nh/en/index.html#collections-idbag

我不认为Fluent支持它;你必须混合使用XML映射。