Ассоциация NHibernate, HiLo и многие ко многим

У меня есть две сущности, Role и Permission, каждая со своей таблицей в базе данных и правильно настроенной генерацией идентификатора с алгоритмом HiLo. Это отлично работает. Однако в базе данных есть еще одна таблица, 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, я не могу указать способ генерации ее идентификатора, и поэтому при сохранении роли (содержащей некоторые разрешения) в БД происходит сбой при создании соответствующих записей в ROLE_PERMISSION_ASSIGNMENT, поскольку не предоставляет первичный ключ.

Есть ли способ сообщить NHibernate для генерации идентификаторов для ROLE_PERMISSION_ASSIGNMENT также с помощью алгоритма HiLo?

Большое спасибо.

1 ответ

Решение

Вы должны отобразить эту ассоциацию как idbag, который делает именно то, что вы хотите (см. http://www.nhforge.org/doc/nh/en/index.html)

Я не думаю, что Свободный поддерживает это; для этого вам придется смешать XML-отображение.

Другие вопросы по тегам