0
我已将IPreUpdateEventListener附加到nhibernate并且没有获得我期望的结果(保存子对象)。这个对象有附加的历史记录,如果某些事情发生了变化,它需要反映并保存它,没有什么大不了的?鉴于实体本身 - 承担ListOfHistory在构造函数中newed起来......Nhibernate IPreUpdateEventListener无法更新子对象
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集合添加一个新的历史记录对象。不是火箭科学。
最令我困惑的是实体有这个历史记录,从事件标记它的所有方式一直回到控制器 - 但它不能保存。没有错误抛出,更糟的是 - 如果我手动添加它保存的历史对象,没有问题(所以我知道我的映射是好的)。
我很茫然,有什么想法?