public DomainEventAwareDbContext(
     DbContextOptions options,
     IDomainEventManager domainEventManager,
     ILogger <DomainEventAwareDbContext> logger
     ) : this(options)
 {
     _domainEventManager = domainEventManager;
     _logger             = logger;
 }
        internal static async Task DispatchDomainEventsAsync(this IDomainEventManager domainEventManager,
                                                             DomainEventAwareDbContext ctx)
        {
            var domainEntities = ctx.ChangeTracker
                                 .Entries <IEntity>()
                                 .Where(x => x.Entity.DomainEvents != null && x.Entity.DomainEvents.Any())
                                 .ToList();

            var domainEvents = domainEntities
                               .SelectMany(x => x.Entity.DomainEvents)
                               .ToList();

            domainEntities
            .ForEach(entity => entity.Entity.ClearDomainEvents());

            foreach (var domainEvent in domainEvents)
            {
                await domainEventManager.Publish(domainEvent).ConfigureAwait(false);
            }
        }
 public EventBehavior(IDomainEventManager eventManager, IMediator mediator, ILogger <TRequest> logger)
 {
     _eventManager = eventManager;
     _mediator     = mediator;
     _logger       = logger;
 }
Esempio n. 4
0
 public PublishReleaseHandler(IApplicationDbContext db, IDomainEventManager eventManager)
 {
     _db           = db;
     _eventManager = eventManager;
 }
Esempio n. 5
0
 public ValidationBehaviour(IDomainEventManager domainEventManager)
 => _domainEventManager = domainEventManager;
Esempio n. 6
0
 public UniversityDbContext(DbContextOptions <UniversityDbContext> options, IDomainEventManager domainEventManager,
                            ILogger <UniversityDbContext> logger) : base(options, domainEventManager, logger)
 {
 }