Beispiel #1
0
        public override async Task <int> SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            var interceptionContext = GetInterceptionContext();
            var interceptors        = DbInterceptorsProvider.Get().ToList();

            interceptors.ForEach(i => i.Before(interceptionContext));
            var result = await base.SaveChangesAsync(cancellationToken);

            interceptors.ForEach(i => i.After(interceptionContext));

            return(result);
        }
Beispiel #2
0
        public override int SaveChanges()
        {
            var interceptionContext = GetInterceptionContext();
            var interceptors        = DbInterceptorsProvider.Get().ToList();

            interceptors.ForEach(i => i.Before(interceptionContext));
            var result = base.SaveChanges();

            interceptors.ForEach(i => i.After(interceptionContext));

            return(result);
        }
Beispiel #3
0
        public static IServiceCollection AddCustomDbContext(this IServiceCollection services)
        {
            services.AddDbContext <ImsContext>((serviceProvider, options) =>
                                               options.UseNpgsql(_settings.Persistence.ConnectionString,
                                                                 npgsqlOptionsAction: sqlOptions =>
            {
                sqlOptions.MigrationsAssembly(typeof(ImsContext).GetTypeInfo().Assembly.GetName().Name);
                sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorCodesToAdd: null);
            }).UseSnakeCaseNamingConvention()
                                               .AddInterceptors(serviceProvider.GetRequiredService <SecondLevelCacheInterceptor>()));

            services.AddDbContext <IntegrationEventLogContext>(options =>
                                                               options.UseNpgsql(_settings.Persistence.ConnectionString,
                                                                                 npgsqlOptionsAction: sqlOptions =>
            {
                sqlOptions.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
                sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorCodesToAdd: null);
            })
                                                               .UseSnakeCaseNamingConvention());
            DbInterceptorsProvider.Add(new AuditInformationInterceptor());
            return(services);
        }