Esempio n. 1
0
        public static DbContextBuilder <TDbContext> AddNpgsqlDbOperationLogChangeTracking <TDbContext>(
            this DbContextBuilder <TDbContext> dbContextBuilder,
            Action <IServiceProvider, NpgsqlDbOperationLogChangeTrackingOptions <TDbContext> >?configureOptions = null)
            where TDbContext : DbContext
        {
            var services = dbContextBuilder.Services;

            services.TryAddSingleton(c => {
                var options = new NpgsqlDbOperationLogChangeTrackingOptions <TDbContext>();
                configureOptions?.Invoke(c, options);
                return(options);
            });

            // NpgsqlDbOperationLogChangeTracker<TDbContext>
            services.TryAddSingleton <NpgsqlDbOperationLogChangeTracker <TDbContext> >();
            services.AddHostedService(c =>
                                      c.GetRequiredService <NpgsqlDbOperationLogChangeTracker <TDbContext> >());
            services.TryAddSingleton <IDbOperationLogChangeTracker <TDbContext> >(c =>
                                                                                  c.GetRequiredService <NpgsqlDbOperationLogChangeTracker <TDbContext> >());

            // NpgsqlDbOperationLogChangeNotifier<TDbContext>
            services.TryAddEnumerable(
                ServiceDescriptor.Singleton <
                    IOperationCompletionListener,
                    NpgsqlDbOperationLogChangeNotifier <TDbContext> >());
            return(dbContextBuilder);
        }
Esempio n. 2
0
 public NpgsqlDbOperationLogChangeNotifier(
     NpgsqlDbOperationLogChangeTrackingOptions <TDbContext> options,
     AgentInfo agentInfo,
     IServiceProvider services)
     : base(services)
 {
     Options   = options;
     AgentInfo = agentInfo;
     AsyncLock = new AsyncLock(ReentryMode.CheckedFail);
 }
Esempio n. 3
0
 public NpgsqlDbOperationLogChangeTracker(
     NpgsqlDbOperationLogChangeTrackingOptions <TDbContext> options,
     AgentInfo agentInfo,
     IServiceProvider services)
     : base(services)
 {
     Options   = options;
     AgentInfo = agentInfo;
     // ReSharper disable once VirtualMemberCallInConstructor
     ReplaceNextEventTask();
 }