.net 仅适用于保存或更新和合并的NHibernate级联约定

.net 仅适用于保存或更新和合并的NHibernate级联约定,.net,nhibernate,fluent-nhibernate,nhibernate-mapping,.net,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我想为NHiberate配置一个约定,以允许级联保存或更新和合并,但不允许删除。 我找不到如何执行此操作,因为Cascade.SaveOrUpdate或Cascade.Merge正在返回void。调用一个方法可以取消先例 以下是我的审判: 1级联将用于保存更新: public class CascadeAllConvention : IHasOneConvention, IHasManyConvention, IReferenceConvention { public

我想为NHiberate配置一个约定,以允许级联保存或更新和合并,但不允许删除。 我找不到如何执行此操作,因为Cascade.SaveOrUpdate或Cascade.Merge正在返回void。调用一个方法可以取消先例

以下是我的审判:

1级联将用于保存更新:

 public class CascadeAllConvention : IHasOneConvention, IHasManyConvention, IReferenceConvention
    {
        public void Apply(IOneToOneInstance instance)
        {
            instance.Cascade.Merge();
            instance.Cascade.SaveUpdate();
        }

        public void Apply(IOneToManyCollectionInstance instance)
        {
            instance.Cascade.Merge();
            instance.Cascade.SaveUpdate();

        }

        public void Apply(IManyToOneInstance instance)
        {
            instance.Cascade.Merge();
            instance.Cascade.SaveUpdate();
        }
    }
2级联将用于合并:

 public class CascadeAllConvention : IHasOneConvention, IHasManyConvention, IReferenceConvention
    {
        public void Apply(IOneToOneInstance instance)
        {
            instance.Cascade.SaveUpdate();
            instance.Cascade.Merge();
        }

        public void Apply(IOneToManyCollectionInstance instance)
        {
            instance.Cascade.SaveUpdate();
            instance.Cascade.Merge();

        }

        public void Apply(IManyToOneInstance instance)
        {
            instance.Cascade.SaveUpdate();
            instance.Cascade.Merge();
        }
    }
3级联将被停用:

 public class CascadeAllConvention : IHasOneConvention, IHasManyConvention, IReferenceConvention
    {
        public void Apply(IOneToOneInstance instance)
        {
            instance.Cascade.All();
            instance.Cascade.Not.Delete();
        }

        public void Apply(IOneToManyCollectionInstance instance)
        {
            instance.Cascade.All();
            instance.Cascade.Not.Delete();

        }

        public void Apply(IManyToOneInstance instance)
        {
            instance.Cascade.All();
            instance.Cascade.Not.Delete();
        }
    }