我有X該類型的對象_對象具有財產ListOfObjectYs那是一個在NHibernate中,無法更新子對象的列表
List<objectY>
NHibernate的映射如下所示:
public ObjectXMap()
{
HasMany(x => x.ListOfObjectYs).AsBag().Inverse();
}
,當我去保存它,我改變_對象,然後有一些屬性:
Session.SaveOrUpdate(x);
現在我需要更新這個屬性是一個列表。我得到一個新的objectY列表,我想用新列表替換現有的objectY列表。我需要這樣做嗎?
foreach (ObjectY y in x.ListOfObjectYs)
{
Session.Delete(y);
deleted = true;
}
if (deleted)
{
_session.Flush();
}
x.ListOfObjectYs.Clear();
foreach (ObjectY y in newObjectYList)
{
x.ListOfObjectYs.Add(y);
Session.SaveOrUpdate(y);
}
_session.Flush();
我的問題是:
- 我是否有添加新的之前刪除一切,齊平。
- 做我需要做的所有這些增量的 之間
有沒有這樣做更新的更好的方法,我需要在有更新的對象(屬性),而且更新的列表屬性保存一個全新的列表(意味着需要刪除和添加項目)。
要清楚,我加Cascade.AllDeleteOrphan()我的映射文件。這就夠了。你能否提供語法來更新列表,因爲我不完全遵循你的意思,「我可以刪除它們」,在某些時候我必須刪除現有的條目並添加新的條目。我沒有看到我如何擺脫這一點。 – leora 2010-12-10 03:25:50
- 我現在得到一個錯誤:具有cascade =「all-delete-orphan」的集合不再被擁有實體實例引用:ObjectY – leora 2010-12-10 03:52:04