static (TriggersContextOptionsBuilder subject, Func <TriggersOptionExtension> extensionAccessor) CreateSubject()
        {
            var optionsBuilder = new DbContextOptionsBuilder();
            TriggersContextOptionsBuilder subject = null;

            optionsBuilder.UseTriggers(x => subject = x);

            return(subject, () => optionsBuilder.Options.FindExtension <TriggersOptionExtension>());
        }
Beispiel #2
0
        public void AddAssemblyTriggers_AbstractTrigger_GetsIgnored()
        {
            var context = new DbContextOptionsBuilder();
            var builder = new TriggersContextOptionsBuilder(context);

            builder.AddAssemblyTriggers();

            var triggerOptionExtension = context.Options.Extensions.OfType <TriggersOptionExtension>().Single();

            // Ensure that we did not register the AbstractTrigger
            Assert.Empty(triggerOptionExtension.Triggers.Where(x => ReferenceEquals(x.typeOrInstance, typeof(AbstractTrigger))));
        }
Beispiel #3
0
        public static TriggersContextOptionsBuilder UseTransactionTriggers(this TriggersContextOptionsBuilder triggersContextOptionsBuilder)
        {
            if (triggersContextOptionsBuilder is null)
            {
                throw new ArgumentNullException(nameof(triggersContextOptionsBuilder));
            }

            return(triggersContextOptionsBuilder
                   .AddTriggerType(typeof(IBeforeCommitTrigger <>))
                   .AddTriggerType(typeof(IAfterCommitTrigger <>))
                   .AddTriggerType(typeof(IBeforeRollbackTrigger <>))
                   .AddTriggerType(typeof(IAfterRollbackTrigger <>)));
        }
        public static TriggersContextOptionsBuilder AddAssemblyTriggers(this TriggersContextOptionsBuilder builder, ServiceLifetime lifetime, params Assembly[] assemblies)
        {
            if (assemblies is null)
            {
                throw new ArgumentNullException(nameof(assemblies));
            }

            var assemblyTypes = assemblies
                                .SelectMany(x => x.GetTypes())
                                .Where(x => x.IsClass);

            foreach (var assemblyType in assemblyTypes)
            {
                builder.AddTrigger(assemblyType, lifetime);
            }

            return(builder);
        }
        public static TriggersContextOptionsBuilder UseAspNetCoreIntegration(this TriggersContextOptionsBuilder builder)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.UseApplicationScopedServiceProviderAccessor(serviceProvider => {
                var httpContextAccessor = serviceProvider.GetService <IHttpContextAccessor>();
                if (httpContextAccessor == null)
                {
                    throw new InvalidOperationException("No service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' has been registered. Please make sure to call 'services.AddHttpContextAccessor()'");
                }
                return(httpContextAccessor.HttpContext.RequestServices);
            });

            return(builder);
        }
 public static TriggersContextOptionsBuilder AddAssemblyTriggers(this TriggersContextOptionsBuilder builder, params Assembly[] assemblies)
 => AddAssemblyTriggers(builder, ServiceLifetime.Scoped, assemblies);
 public static TriggersContextOptionsBuilder AddAssemblyTriggers(this TriggersContextOptionsBuilder builder, ServiceLifetime lifetime)
 => AddAssemblyTriggers(builder, lifetime, Assembly.GetCallingAssembly());
 public static TriggersContextOptionsBuilder AddAssemblyTriggers(this TriggersContextOptionsBuilder builder)
 => AddAssemblyTriggers(builder, Assembly.GetCallingAssembly());