2009-09-16 3 views
1

я следующий код, который должен дать определенную функциональность, но это не так: SFluent NHibernate HasManyToMany() Сохранить Проблему/Update

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

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(); 

    } 


} 

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

+0

Извините за то, что он маленький, я не заметил, что сообщение: S – Saeedouv

ответ

0

Вы искали, сделав свой ManyToMany work by convention?

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

+0

Спасибо, но это похоже на проблему после внесения некоторых изменений (как в ссылке, которую вы опубликовали). – Saeedouv