1

假设我有一堂课:

public class Entity
{
  ...
  public IEnumerable<Cousin> Cousins { get; set; }
}

...我已经映射了它...

public class EntityMap : ClassMap<Entity>
{
  public EntityMap()
  {
    ...
    HasMany(x => x.Cousins).Cascade.AllDeleteOrphan();
  }
}

Cousin 没有自己的存储库(至少目前没有)。我不想通过 Entity 及其存储库来节省所有费用。

我已经存储了表兄弟的列表,因此实体在表兄弟中有项目。

下次我想保存实体时,它可能会有新的表亲。因此,我希望现有的 Cousins 消失并为新的 Cousins 收藏腾出空间。

我正在尝试执行此操作,但遇到此错误消息:

A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: Cousins

每次我保存实体时,如何让 NHibernate 覆盖 Cousins?此外,如果这是不好的做法 - 说出来。

4

1 回答 1

3

看起来您正在更改集合的参考,我的意思是制作类似的东西x.Cousings = new List<Cousin>()

你应该做x.Clear()然后添加每个元素x.Add(someCousin)

于 2012-04-13T22:34:05.977 回答