This is part of a series of posts about NHibernate Pitfalls. See the entire collection here.  For entities that have associations – one-to-one, one-to-many, many-to-one or many-to-many –, NHibernate needs to know what to do with their related entities, in three particular moments: when saving, updating or deleting. In particular, there are two possible behaviors: either ignore these related entities or cascade changes to them. NHibernate allows setting the cascade behavior for each association, and the default behavior is not to cascade (ignore).  The possible cascade options are:              None        Ignore, this is the default                  Save-Update        If the entity is being saved or updated, also save any related entities that are either not saved or have been modified and associate these related entities to the root entity. Generally safe                  Delete        If the entity is being deleted, also delete the related entities. This is only useful for parent-child relations                  Delete-Orphan        Identical to Delete, with the addition that if once related entity is removed from the association – orphaned –, also delete it. Also only for parent-child                  All        Combination of Save-Update and Delete, usually that’s what we want (for parent-child relations, of course)                  All-Delete-Orphan        Same as All plus delete any related entities who lose their relationship          In summary, Save-Update is generally what you want in most cases. As for the Delete variations, they should only be used if the related entities depend on the root entity (parent-child), so that deleting the root entity and not their related entities would result in a constraint violation on the database.