nHibernate节省一对多

时间:2010-01-20 22:19:29

标签: nhibernate orm

我有一个包含子项列表的父类。我将父级和子级映射为双向,并在父级上使用has-many和inverse,并启用了cascade.all。如果我修改子列表中的对象,但父项上没有属性,则nHibernate不会保存子项。如果我修改父项上的属性,一切都可以保存。这是设计还是我需要设置的特殊属性?

2 个答案:

答案 0 :(得分:0)

这可能与您将子项添加到集合的方式有关。在双向中,您必须在代码中管理关系的两个方面。考虑Fluent Nhibernate Getting Started Guide中的示例。检查商店实体。

商店有很多员工。 Store的Staff属性是Employees的集合。该关系设置为双向。

商店有以下方法

public virtual void AddEmployee(Employee employee)
{
  employee.Store = this;
  Staff.Add(employee);
}

如您所见,childs Parent属性需要设置为父对象。如果没有这样做,那么Nhibernate将无法理解孩子的父亲是谁,如果只修改了孩子并且调用了SaveOrUpdate(父母),则无法自动保存孩子。

你需要同时做这两件事。

答案 1 :(得分:0)

我明白了。我正在使用各种听众测试审计。当我附加到IFlushEntityListner时,它导致保存停止工作。 Geez令人沮丧。谢谢大家!