Search code examples
nhibernateormnhibernate-mappingcascade

NHibernate mapping by code (Loquacious) - Cascade options


I have a question on Cascade enum options behavior when using NHibernate Mapping By Code.

Enum has following options:

[Flags]
public enum Cascade
{
    None = 0,
    Persist = 2,
    Refresh = 4,
    Merge = 8,
    Remove = 16,
    Detach = 32,
    ReAttach = 64,
    DeleteOrphans = 128,
    All = 256,
}

They are intended to be used like bit flag combinations (as far as I get it).

I've looked thru NHibernate documentation, and the following cascade options for XML mappings are defined there: Lifecycles and object graphs

Can anyone describe cascade options from new Nhibernate mapping by code? Half of them are self describing, other half is not.


Solution

  • From src\NHibernate\Mapping\ByCode\Impl\CascadeConverter.cs

        private static IEnumerable<string> CascadeDefinitions(this Cascade source)
        {
            if (source.Has(Cascade.All))
            {
                yield return "all";
            }
            if (source.Has(Cascade.Persist))
            {
                yield return "save-update, persist";
            }
            if (source.Has(Cascade.Refresh))
            {
                yield return "refresh";
            }
            if (source.Has(Cascade.Merge))
            {
                yield return "merge";
            }
            if (source.Has(Cascade.Remove))
            {
                yield return "delete";
            }
            if (source.Has(Cascade.Detach))
            {
                yield return "evict";
            }
            if (source.Has(Cascade.ReAttach))
            {
                yield return "lock";
            }
            if (source.Has(Cascade.DeleteOrphans))
            {
                yield return "delete-orphan";
            }
        }
    

    Note: all cascades all except of delete-orphan.