1

Lets say I have a class:

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

... and I've mapped it...

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

Cousin does not have a repository of its own (at least not for now). I wan't to do all savings through Entity and its repository.

I have already stored a list of cousins, so the Entity has items in Cousins.

The next time I want to save Entity, it might have new Cousins. Therefore I want the existing Cousins to disappear and make room for the new collection of Cousins.

I'm trying to do this but I encounter this error message:

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

How can I make NHibernate overwrite Cousins everytime I save Entity? Also, if this is bad practice - say so.

1 Answers1

3

It looks like you are changing the reference of the collection, i mean making something like x.Cousings = new List<Cousin>()

you should do x.Clear() and then add each element with x.Add(someCousin)

jorgehmv
  • 3,633
  • 3
  • 25
  • 39