Suppose I have a class Foo
. I also have a view on Foo
called Foo_Foo
that lists a many-to-many association between Foo
s. I mapped this association as a simple immutable set on each Foo
, with cascade="none"
:
<set name="association" table="Foo_Foo" cascade="none" mutable="false">
<key column="ParentFoo" />
<many-to-many class="Foo, MyAssembly" column="BaseFoo" />
</set>
However, when I try to delete a Foo
, NHibernate tries and rightly fails to delete the Foo.association
.
How can I prevent NHibernate from trying to delete the association to a view?
The collection belongs to
Foo
. You can't share the collection, so there is no need to keep it in the database. Cascade is used to tell NH if the referencedFoo
s should be also deleted or not.Why do you want the
Foo_Foo
records to keep in the database? If this should be a bidirectional many-to-many self reference, it doesn't work like this.Edit, after understanding the question.
Cascade doesn't work in your case, because it affects only the referenced Foos.
To avoid inserts / updates and deletes of the collection table, you may try one of the following:
mutable="false"
, which you already tried. I don't really understand why it isn't working. You may ask in the Nhibernate user group.inverse="true"
. Inverse tells NH that the collection is mapped somewhere else and doesn't need to be stored from here. So it just omits inserts, but I don't know about deletes.cascade="false"
will work (because it is the referenced entity). It will also work configure insert, update and delete sql statements (which are empty), but this is most probably not even necessary.