我有子類的兩個列表父類NHibernate的有許多插入產生額外的更新(無反)
public class Parent
{
...
public virtual ICollection<Foo> Foo{ get; set; }
public virtual ICollection<Bae> Bar{ get; set; }
}
public class Foo
{
...
public virtual Parent Parent{ get; set; }
}
public class Bar
{
...
public virtual Parent Parent{ get; set; }
}
的映射是
public ParentMap()
{
...
HasMany(m => m.Foo).AsSet().Cascade.All();
HasMany(m => m.Bar).AsSet().Cascade.All();
}
public FooMap()
{
...
References(m => m.Parent);
}
public BarMap()
{
...
References(m => m.Parent);
}
每當我保存父對象,我得到
INSERT Parent ...
INSERT Foo with Parent_id set to NULL
INSERT Bar with Parent_id set to NULL
UPDATE Foo set Parent_id to Parent id
UPDATE Bar set Parent_id to Parent id
是否有自定的方式除了與Inverse
的關係,以避免額外的更新?
它是沒有意義的拯救孩子,以拯救父母。特別是當有兩個不同的兒童對象時。我想要的是調用'session.Save(parent)'和整棵樹來保存。 –
@Circadian,這正是你的反作用。您不必有一個孩子來保存父母。 –
@Circadian你已經有'Cascade.All()',這將確保你不需要在子節點上調用'Save()'。這是反向或我建議的任何其他方法的獨立。 – cremor