Ejemplo n.º 1
0
 public ITriggerSession CreateSession(DbContext context, IServiceProvider serviceProvider)
 {
     CreateSessionCalls += 1;
     ServiceProvider     = serviceProvider;
     LastSession         = new TriggerSessionStub();
     Current             = LastSession;
     return(LastSession);
 }
Ejemplo n.º 2
0
        public static Task RaiseBeforeRollbackTriggers(this ITriggerSession triggerSession, CancellationToken cancellationToken = default)
        {
            if (triggerSession == null)
            {
                throw new ArgumentNullException(nameof(triggerSession));
            }

            if (_beforeRollbackTriggerContextDiscoveryStrategy == null)
            {
                _beforeRollbackTriggerContextDiscoveryStrategy = new NonCascadingTriggerContextDiscoveryStrategy("BeforeRollback");
            }

            return(((TriggerSession)triggerSession).RaiseTriggers(typeof(IBeforeRollbackTrigger <>), null, _beforeRollbackTriggerContextDiscoveryStrategy, entityType => new BeforeRollbackTriggerDescriptor(entityType), cancellationToken));
        }
Ejemplo n.º 3
0
        public static Task RaiseAfterCommitTriggers(this ITriggerSession triggerSession, CancellationToken cancellationToken = default)
        {
            if (triggerSession == null)
            {
                throw new ArgumentNullException(nameof(triggerSession));
            }

            if (_afterCommitTriggerContextDiscoveryStrategy == null)
            {
                _afterCommitTriggerContextDiscoveryStrategy = new NonRecursiveTriggerContextDiscoveryStrategy("AfterCommit");
            }

            return(((TriggerSession)triggerSession).RaiseTriggers(typeof(IAfterCommitTrigger <>), null, _afterCommitTriggerContextDiscoveryStrategy, entityType => new AfterCommitTriggerDescriptor(entityType), cancellationToken));
        }
Ejemplo n.º 4
0
        public static async Task RaiseBeforeCommitStartingTriggers(this ITriggerSession triggerSession, CancellationToken cancellationToken = default)
        {
            if (triggerSession == null)
            {
                throw new ArgumentNullException(nameof(triggerSession));
            }

            if (triggerSession is not TriggerSession typedTriggerSession)
            {
                throw new InvalidOperationException("Method is implemented for concrete TriggerSessions only");
            }

            var triggers = typedTriggerSession.DiscoveryService.DiscoverTriggers <IBeforeCommitStartingTrigger>();

            foreach (var trigger in triggers)
            {
                await trigger.BeforeCommitStarting(cancellationToken);
            }
        }