using IdentityService.Domain.Entities; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; namespace IdentityService.Infrastructure { public class UserDbContext : IdentityDbContext { private IMediator? mediator; public DbSet Users { get; private set; } public UserDbContext(DbContextOptions options, IMediator mediator) : base(options) { this.mediator = mediator; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly); modelBuilder.EnableSoftDeletionGlobalFilter(); } public async override Task SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default) { if (mediator != null) { await mediator.DispatchDomainEventsAsync(this); } return await base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken); } } }