В nhibernate не удается обновить список дочерних объектов

у меня есть x , объект типа objectX , у которого есть свойство ListOfObjectYs , которое является

List<objectY>

, отображение nhibernate выглядит следующим образом:

    public ObjectXMap()
    {
        HasMany(x => x.ListOfObjectYs).AsBag().Inverse(); 
    }

когда я иду, чтобы сохранить его, я изменяю некоторые свойства на objectX , а затем:

    Session.SaveOrUpdate(x);

теперь мне нужно обновить это свойство, которое является списком. Я получаю новый список objectYs и хочу заменить существующий список objectY новым списком. Мне нужно это сделать?

  foreach (ObjectY y in x.ListOfObjectYs)
                {
                   Session.Delete(y);
                    deleted = true;
                }
                if (deleted)
                {
                   _session.Flush();
                }
                x.ListOfObjectYs.Clear();

                foreach (ObjectY y in newObjectYList)
                {
                    x.ListOfObjectYs.Add(y);
                   Session.SaveOrUpdate(y);
                }
                _session.Flush();

у меня следующие вопросы:

  1. Нужно ли мне все удалить и очистить перед добавлением новых.
  2. Нужно ли мне делать все эти инкрементальные сохранения между

, есть ли лучший способ сделать это обновление, где мне нужно для обновления объекта (свойств), но также для обновления свойств, которые являются списком, в котором есть полностью новый список (что означает, что элементы необходимо удалить и добавить).

6
задан leora 10 December 2010 в 04:11
поделиться