I just looked and here is the full cascade dictionary for NH 2.1 GA:
static CascadeStyle()
{
Styles["all"] = All;
Styles["all-delete-orphan"] = AllDeleteOrphan;
Styles["save-update"] = Update;
Styles["persist"] = Persist;
Styles["merge"] = Merge;
Styles["lock"] = Lock;
Styles["refresh"] = Refresh;
Styles["replicate"] = Replicate;
Styles["evict"] = Evict;
Styles["delete"] = Delete;
Styles["remove"] = Delete; // adds remove as a sort-of alias for delete...
Styles["delete-orphan"] = DeleteOrphan;
Styles["none"] = None;
}
Sure enough, "delete-orphan" is there, and it has a valid CascadeStyle
implementation:
[Serializable]
private class DeleteOrphanCascadeStyle : CascadeStyle
{
public override bool DoCascade(CascadingAction action)
{
return action == CascadingAction.Delete || action ==
CascadingAction.SaveUpdate;
}
public override bool ReallyDoCascade(CascadingAction action)
{
return action == CascadingAction.Delete;
}
public override bool HasOrphanDelete
{
get { return true; }
}
}
The question is now what to do about it. :)