diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/DaprEventBusServiceCollectionExtensions.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/DaprEventBusServiceCollectionExtensions.cs index f245f9d..421e64f 100644 --- a/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/DaprEventBusServiceCollectionExtensions.cs +++ b/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/DaprEventBusServiceCollectionExtensions.cs @@ -1,10 +1,11 @@ -using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr; +using System.Reflection; +using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr; using Cnblogs.Architecture.Ddd.EventBus.Abstractions; using Cnblogs.Architecture.Ddd.EventBus.Dapr; using Dapr.Client; using MediatR; -using System.Reflection; +// ReSharper disable once CheckNamespace namespace Microsoft.Extensions.DependencyInjection; /// @@ -36,5 +37,4 @@ public static IServiceCollection AddDaprEventBus( return services; } - } diff --git a/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs b/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs index e32cb1d..00e4d41 100644 --- a/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs +++ b/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs @@ -115,7 +115,6 @@ private static void EnsureEventBusRegistered(this IEndpointRouteBuilder builder, } daprOptions.IsEventBusRegistered = true; - return; } private static void EnsureDaprSubscribeHandlerMapped(this IEndpointRouteBuilder builder, DaprOptions daprOptions) @@ -132,7 +131,6 @@ private static void EnsureDaprSubscribeHandlerMapped(this IEndpointRouteBuilder builder.MapSubscribeHandler(); daprOptions.IsDaprSubscribeHandlerMapped = true; - return; } private static DaprOptions GetDaprOptions(this IEndpointRouteBuilder builder) diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.EntityFramework/BaseRepository.cs b/src/Cnblogs.Architecture.Ddd.Infrastructure.EntityFramework/BaseRepository.cs index d73f816..98ebe2b 100644 --- a/src/Cnblogs.Architecture.Ddd.Infrastructure.EntityFramework/BaseRepository.cs +++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.EntityFramework/BaseRepository.cs @@ -148,24 +148,29 @@ private async Task SaveEntitiesInternalAsync( bool dispatchDomainEventFirst = false, CancellationToken cancellationToken = default) { - var entities = Context.ExtractDomainEventSources(); - var domainEvents = entities.SelectMany(x => x.DomainEvents!.OfType()).ToList(); - entities.ForEach(x => x.ClearDomainEvents()); if (dispatchDomainEventFirst) { + await ExtraAndPublishDomainEventsAsync(); await SaveChangesAsync(cancellationToken); } - - await BeforeDispatchDomainEventAsync(domainEvents, Context); - await _mediator.DispatchDomainEventsAsync(domainEvents); - if (dispatchDomainEventFirst == false) + else { await SaveChangesAsync(cancellationToken); + await ExtraAndPublishDomainEventsAsync(); } return true; } + private async Task ExtraAndPublishDomainEventsAsync() + { + var entities = Context.ExtractDomainEventSources(); + var domainEvents = entities.SelectMany(x => x.DomainEvents!.OfType()).ToList(); + entities.ForEach(x => x.ClearDomainEvents()); + await BeforeDispatchDomainEventAsync(domainEvents, Context); + await _mediator.DispatchDomainEventsAsync(domainEvents); + } + private void CallBeforeUpdate() { var domainEntities = Context.ChangeTracker diff --git a/test/Cnblogs.Architecture.IntegrationTestProject/EventHandlers/TestIntegrationEventHandler.cs b/test/Cnblogs.Architecture.IntegrationTestProject/EventHandlers/TestIntegrationEventHandler.cs index d363660..08ebc6b 100644 --- a/test/Cnblogs.Architecture.IntegrationTestProject/EventHandlers/TestIntegrationEventHandler.cs +++ b/test/Cnblogs.Architecture.IntegrationTestProject/EventHandlers/TestIntegrationEventHandler.cs @@ -1,7 +1,5 @@ -using System.Diagnostics; -using Cnblogs.Architecture.Ddd.EventBus.Abstractions; +using Cnblogs.Architecture.Ddd.EventBus.Abstractions; using Cnblogs.Architecture.TestIntegrationEvents; -using MediatR; namespace Cnblogs.Architecture.IntegrationTestProject.EventHandlers; diff --git a/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs b/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs index 1d9be35..d500b30 100644 --- a/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs +++ b/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs @@ -3,7 +3,6 @@ using Cnblogs.Architecture.TestIntegrationEvents; using FluentAssertions; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; diff --git a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs index e8b2bfe..26a0ccd 100644 --- a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs +++ b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs @@ -3,10 +3,7 @@ using Cnblogs.Architecture.IntegrationTestProject.EventHandlers; using Cnblogs.Architecture.TestIntegrationEvents; using FluentAssertions; -using MediatR; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using Xunit.Abstractions; diff --git a/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs b/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs index 2a7c7e7..529f855 100644 --- a/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs +++ b/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs @@ -1,7 +1,6 @@ using Cnblogs.Architecture.TestIntegrationEvents; using FluentAssertions; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; namespace Cnblogs.Architecture.UnitTests.EventBus;