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); }
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); }
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); }