Свободный NHibernate HasManyToMany () Сохранить / обновить проблему - PullRequest
1 голос
/ 16 сентября 2009

У меня есть следующий код, который должен дать определенную функциональность, но это не так: S

В любом случае, вот моя проблема:

http://img525.imageshack.us/img525/1315/diagramp.png

вот код сопоставления:

public class UsersMap : ClassMap<User>
{
    public UsersMap()
    {

        this.Table("Users");
        Id(x => x.UserName).GeneratedBy.Assigned();

        Map(x => x.FirstName);
        Map(x => x.LastName);
        Map(x => x.Password);
        Map(x =>x.EMail);
        Map(x => x.Title);
        Map(x => x.Division);
        Map(x => x.Status);

        HasManyToMany(x => x.Roles)
            .Table("UserInRoles").ParentKeyColumn("Username")
            .ChildKeyColumn("RoleId").AsBag().Inverse();


    }
}

public class RolesMap : ClassMap<Role>
{

    public RolesMap()
    {
        this.Table("Roles");
        Id(x => x.ID).GeneratedBy.Assigned();
        Map(x => x.RoleName);

        HasManyToMany(x => x.Users)
            .Table("UserInRoles").ParentKeyColumn("RoleId")
            .ChildKeyColumn("Username").AsBag().Cascade.All();

    }


}

моя проблема в том, что при попытке (назначить роль для конкретного пользователя) имя пользователя добавляется в таблицу UserInRoles, но идентификатор роли, если он уже существует, будет удален из соответствующей строки и назначен новой строке, любая идея

1 Ответ

0 голосов
/ 16 сентября 2009

Вы смотрели, как заставляет ManyToMany работать по соглашению ?

Связанный пример на самом деле относится к ролям и в значительной степени к тому, что вы пытаетесь сделать здесь.

...