diff --git a/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs b/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs index 4add23b35..b60ddc27c 100644 --- a/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs +++ b/src/Services/Catalog/Catalog.API/Controllers/CatalogController.cs @@ -130,6 +130,7 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers return Ok(items); } + //POST api/v1/[controller]/edit [Route("edit")] [HttpPost] public async Task EditProduct([FromBody]CatalogItem product) @@ -164,6 +165,7 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers return Ok(); } + //POST api/v1/[controller]/create [Route("create")] [HttpPost] public async Task CreateProduct([FromBody]CatalogItem product) @@ -184,6 +186,7 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers return Ok(); } + //DELETE api/v1/[controller]/id [Route("{id}")] [HttpDelete] public async Task DeleteProduct(int id) diff --git a/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs b/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs index de3f870da..b74c7631d 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs @@ -237,10 +237,18 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure public async Task SaveEntitiesAsync(CancellationToken cancellationToken = default(CancellationToken)) { + // Dispatch Domain Events collection. + // Choices: + // A) Right BEFORE committing data (EF SaveChanges) into the DB will make a single transaction including + // side effects from the domain event handlers which are using the same DbContext with "InstancePerLifetimeScope" or "scoped" lifetime + // B) Right AFTER committing data (EF SaveChanges) into the DB will make multiple transactions. + // You will need to handle eventual consistency and compensatory actions in case of failures in any of the Handlers. + await _mediator.DispatchDomainEventsAsync(this); + + + // After executing this line all the changes performed thought the DbContext will be commited var result = await base.SaveChangesAsync(); - // Dispatch the Domain Events collection right after saving/committing data into the database - await _mediator.DispatchDomainEventsAsync(this); return result; } } diff --git a/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs b/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs index 727e58a00..f7a847934 100644 --- a/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs @@ -34,7 +34,7 @@ namespace FunctionalTests.Services.Catalog public static class Post { - public static string UpdateCatalogProduct = "api/v1/catalog"; + public static string UpdateCatalogProduct = "api/v1/catalog/edit"; } } }