Ejemplo n.º 1
0
        public static async Task DispatchDomainEventsAsync(this IMediator mediator, XxxContext ctx, CancellationToken cancellationToken = default)
        {
            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(x => x.Entity.DomainEvents.Clear());

            var tasks = domainEvents
                        .Select(async(domainEvent) =>
            {
                await mediator.Publish(domainEvent, cancellationToken);
            });

            await Task.WhenAll(tasks);
        }
Ejemplo n.º 2
0
 public BarRepository(XxxContext context)
 {
     _context = context;
 }
Ejemplo n.º 3
0
 public FooRepository(XxxContext context)
 {
     _context = context;
 }