2014-01-13 3 views
1

У меня есть 2 объекта:Fluent NHibernate IList <> HasManyToMany не работает

public class Authors 
{ 
    public virtual int Id { get; set; } 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
    public virtual IList<Tags> Tags { get; set; } 
} 

public class Tags 
{ 
    public virtual int Id { get; set; } 
    public virtual string TagMark { get; set; } 
    public virtual IList<Authors> Authors { get; set; } 
} 

и отображения для них

public class AuthorsMap : ClassMap<Authors> 
{ 
    public AuthorsMap() 
    { 
     Id(x => x.Id); 

     Map(x => x.FirstName) 
      .Length(100) 
      .Not.Nullable(); 

     Map(x => x.LastName) 
      .Length(100) 
      .Not.Nullable(); 

     HasManyToMany(x => x.Tags); 

    } 
} 

public class TagsMap : ClassMap<Tags> 
{ 
    public TagsMap() 
    { 
     Id(x => x.Id); 

     Map(x => x.TagMark) 
      .Length(100) 
      .Not.Nullable(); 

     HasManyToMany(x => x.Authors) 
      .Cascade.All().Inverse(); 
    } 
} 

Но когда я хочу, чтобы добавить новые теги к существующему автору, я не ничего не получаю. Даже ошибка не выбрасывается и, конечно, тег не добавляется в таблицу отношений с авторами.

, например:

using (var trans.....) { 
author.Tags.Add(tagobject) 
trans.Commit() 
} 

в то время как tagobject и автор получены ранее. Я также пытался добавить как session.SaveOrUpdate (автор), но не работает ... HEELP!

+0

Да, автор, извините –

+0

Просто к сведению. Я хотел дать вам намек, не используйте, возможно, много-ко-многим. Я бы предложил использовать объект сопряжения, как описано здесь, более подробно http://stackoverflow.com/a/16827671/1679310 –

+0

@Radim: Почему бы не использовать многие-ко-многим? Он полностью управляется NH и очень удобен. –

ответ

1

Вам нужно добавить каскад для вашего отображения Автора, так что новые переходные метки сохраняются, когда автор будет сохранен/обновления:

HasManyToMany(x => x.Tags) 
.Cascade.All(); 
Смежные вопросы