public CascadeEntityJoinWalker(IOuterJoinLoadable persister, CascadingAction action,
                                       ISessionFactoryImplementor factory)
            : base(persister, factory, CollectionHelper.EmptyDictionary <string, IFilter>())
        {
            cascadeAction = action;
            SqlStringBuilder whereCondition = WhereString(Alias, persister.IdentifierColumnNames, 1)
                                              //include the discriminator and class-level where, but not filters
                                              .Add(persister.FilterFragment(Alias, CollectionHelper.EmptyDictionary <string, IFilter>()));

            InitAll(whereCondition.ToSqlString(), SqlString.Empty, LockMode.Read);
        }
        public CascadeEntityLoader(IOuterJoinLoadable persister, CascadingAction action, ISessionFactoryImplementor factory)
            : base(persister, persister.IdentifierType, factory, CollectionHelper.EmptyDictionary <string, IFilter>())
        {
            JoinWalker walker = new CascadeEntityJoinWalker(persister, action, factory);

            InitFromWalker(walker);

            PostInstantiate();

            log.Debug("Static select for action {0} on entity {1}: {2}", action, entityName, SqlString);
        }
Example #3
0
        private static bool DoCascade(CascadingAction cascadingAction, GraphNode childNode, EntityAssociation childAssociation)
        {
            var cascade = childAssociation.InverseAssociationPropertyCascadeStyle;

            if (cascade == null)
            {
                return(false);
            }

            return(cascade.DoCascade(cascadingAction) &&
                   DoCascade(cascadingAction, childNode.EntityInfo.EntityState));
        }
Example #4
0
 private static bool DoCascade(CascadingAction cascadingAction, EntityState childState)
 {
     // Deleted entities do not cascade with SaveUpdate action
     return((cascadingAction == CascadingAction.SaveUpdate && childState != EntityState.Deleted) ||
            (cascadingAction == CascadingAction.Delete && childState == EntityState.Deleted));
 }