Nhibernate IPreUpdateEventListener не может обновить дочерний объект - PullRequest
0 голосов
/ 28 октября 2010

Я прикрепил IPreUpdateEventListener к nhibernate и не получаю ожидаемых результатов (сохранение дочернего объекта).К этому объекту привязана история, и если что-то изменится, он должен отразить это и сохранить его, разве нет ничего страшного?Учитывая сущность как таковую - предположим, что ListOfHistory обновлен в конструкторе ...

    public class Car : IHaveHistory
    {
        //impl of IHaveHistory
        public void AddHistory(string message, int parentId) 
        {
             ListOfHistory.Add(new CarHistory { Message = message, ParentId = parentId });
        }
        public ISet<CarHistory> ListOfHistory { get; private set; }

    }
    public class CarHistory
    {
        public int ParentId { get; set; }
        public string Message { get; set; }
    }

... в каком-то другом классе ...

    public bool OnPreUpdate(PreUpdateEvent beforeUpdateEvent)
    {
        //greatly watered down ... but effectively ...
        var car = beforeUpdateEvent.Entity as IHaveHistory;
        if (car != null)
             car.AddHistory(someId, aMessage);

        return false;
    }

Возникает событие OnPreUpdate, берет объект, гарантирует его ожидаемый тип (IHaveHistory) и определяет, изменились ли определенные свойства или нет на основе некоторых атрибутов.Если это так, он добавляет новый объект истории в коллекцию ListOfHistory.Не ракетостроение.

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

Я в растерянности, есть идеи?

1 Ответ

0 голосов
/ 02 ноября 2010

Session.SaveOrUpdateCopy (entity) - это то, что мне нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...