Это новый вопрос, заранее извините.
Я использую беглый NHibernate и получаю странное поведение на нем.
У меня есть два класса, которые выглядят так (упрощенно):
public class Group
{
public virtual int Id{get;protected set;}
public virtual String Name{get;set;}
public virtual List<Person> Persons {get; protected set;}
}
public class Person
{
public virtual int Id{get;protected set;}
public virtual String Name{get;set}
public virtual Group Group {get;set;}
}
и сопоставления
Группа:
Id(x=>x.Id)
Map(x=>x.Name)
HasMany(x=>x.Persons).Cascade.All.Inverse()
лицо:
Id(x=>x.Id)
Map(x=>x.Name)
References(x=>x.Group)
Теперь в своем коде я хочу переместить имеющегося у меня человека в другую группу. Так как это отношения, я думал, что могу просто сделать
myPerson.Group = anotherGroup;
_mySession.SaveOrUpdate(myPerson);
_mySession.Flush()
Если я это сделаю, база данных будет обновлена правильно, но если я попытаюсь посмотреть в списке лиц объекта "anotherGroup", я не увижу объект "myPerson", который все еще находится в лицах старой группы список.
Итак, есть ли способ сказать NH перезагрузить список или сделать так, чтобы он обновлялся всегда.
Единственный обходной путь, который я нашел сейчас, это:
myPerson.Group.Persons.Remove(myPerson);
anotherGroup.Persons.Add(myPerson);
myPerson.Group = anotherGroup;
_mySession.Flush()
Но я нахожу это немного грязным ...
Есть идеи, что я делаю не так? Спасибо!