public IntegrationEventLogService( AWContext dbContext, Assembly eventTypesAssembly ) { this.dbContext = dbContext; eventTypes = eventTypesAssembly .GetTypes() .Where(t => t.Name.EndsWith(nameof(IntegrationEvent))) .ToList(); }
public static async Task DispatchDomainEventsAsync(this IMediator mediator, AWContext ctx) { var domainEntities = ctx.ChangeTracker .Entries <Entity>() .Where(x => x.Entity.DomainEvents != null && x.Entity.DomainEvents.Any()); var domainEvents = domainEntities .SelectMany(x => x.Entity.DomainEvents) .ToList(); domainEntities.ToList() .ForEach(entity => entity.Entity.ClearDomainEvents()); foreach (var domainEvent in domainEvents) { await mediator.Publish(domainEvent); } }
public EfRepository(AWContext dbContext) : base(dbContext) { this.dbContext = dbContext; }