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); }
public NpgsqlDbOperationLogChangeNotifier( NpgsqlDbOperationLogChangeTrackingOptions <TDbContext> options, AgentInfo agentInfo, IServiceProvider services) : base(services) { Options = options; AgentInfo = agentInfo; AsyncLock = new AsyncLock(ReentryMode.CheckedFail); }
public NpgsqlDbOperationLogChangeTracker( NpgsqlDbOperationLogChangeTrackingOptions <TDbContext> options, AgentInfo agentInfo, IServiceProvider services) : base(services) { Options = options; AgentInfo = agentInfo; // ReSharper disable once VirtualMemberCallInConstructor ReplaceNextEventTask(); }