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); }
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)); }
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)); }