Я прикрепил 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.Не ракетостроение.
Что меня больше всего смущает, так это то, что сущность имеет эту запись истории, все время с того момента, как событие ее помечает, и вплоть до контроллера - но она просто этого не делает.спасти.Там нет ошибок и хуже - если я вручную добавлю этот объект истории, он сохраняет, нет проблем (так что я знаю, что мои отображения хороши).
Я в растерянности, есть идеи?