Try our conversational search powered by Generative AI!

Error when deleting category that has entry associations

Found in

EPiServer.Commerce 11.4.0

Fixed in

EPiServer.Commerce 11.5.0

(Or a related package)

Created

Nov 14, 2017

Updated

Nov 30, 2017

Area

Core

State

Closed, Fixed and tested


Description

Steps to reproduce

  1. Go to the new Catalog UI.
  2. Add associations to several products in same category.
  3. Delete that category.

Expected: Can delete category.
Actual: Delete fails with below error in stack trace:

[DBConcurrencyException: Concurrency violation: the DeleteCommand affected 0 of the expected 1 records.]
System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) +1661056
System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) +53
System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) +2415
System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows) +254
Mediachase.Data.Provider.<>c_DisplayClass14_0.<SaveRows>b_0() in C:\source\commerce\ECF\Mediachase.SqlDataProvider\SqlDataProvider.cs:237
EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute(Func`1 method) +65
Mediachase.Data.Provider.SqlDataProvider.WithRetry(Func`1 action) in C:\source\commerce\ECF\Mediachase.SqlDataProvider\SqlDataProvider.cs:124
Mediachase.Data.Provider.SqlDataProvider.SaveRows(DataCommand command) in C:\source\commerce\ECF\Mediachase.SqlDataProvider\SqlDataProvider.cs:234
Mediachase.Data.Provider.SqlDataProvider.Save(DataCommand command) in C:\source\commerce\ECF\Mediachase.SqlDataProvider\SqlDataProvider.cs:113
Mediachase.Data.Provider.DataService.Save(DataCommand command) in C:\source\commerce\ECF\Mediachase.DataProvider\DataService.cs:136
Mediachase.Commerce.Storage.DataHelper.SaveTableSimpleWorker(DataCommand cmd, DataTable table, DataViewRowState state) in C:\source\commerce\ECF\Mediachase.Commerce\Storage\DataHelper.cs:230
Mediachase.Commerce.Storage.DataHelper.SaveDataSetSimple(DataCommand cmd, DataSet set, String[] tables) in C:\source\commerce\ECF\Mediachase.Commerce\Storage\DataHelper.cs:66
Mediachase.Commerce.Catalog.Data.CatalogAssociationAdmin.Save() in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Data\CatalogAssociationAdmin.cs:124
Mediachase.Commerce.Catalog.Managers.CatalogAssociationManager.SaveCatalogAssociation(CatalogAssociationDto dataset) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Managers\CatalogAssociationManager.cs:147
Mediachase.Commerce.Catalog.Managers.CatalogAssociationManager.DeleteCatalogEntryAssociations(List`1 deletedEntries) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Managers\CatalogAssociationManager.cs:226
Mediachase.Commerce.Catalog.Managers.CatalogEntryManager.DeleteCatalogEntries(IInventoryService inventoryService, IEnumerable`1 catalogEntryIds) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Managers\CatalogEntryManager.cs:463
Mediachase.Commerce.Catalog.Managers.CatalogNodeManager.DeleteCatalogNodeAndEntries(IInventoryService inventoryService, Int32 catalogNodeId, Int32 catalogId) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Managers\CatalogNodeManager.cs:474
Mediachase.Commerce.Catalog.Managers.CatalogNodeManager.DeleteCatalogNodeAndEntries(IInventoryService inventoryService, Int32 catalogNodeId) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Managers\CatalogNodeManager.cs:419
Mediachase.Commerce.Catalog.Impl.CatalogContextImpl.DeleteCatalogNodeAndEntries(Int32 catalogNodeId) in C:\source\commerce\ECF\Mediachase.Commerce\Catalog\Impl\CatalogContextImpl.cs:415
EPiServer.Commerce.Catalog.Provider.Persistence.NodeContentCommitter.Delete(ContentReference contentLink) in C:\source\commerce\EPiServer.Business.Commerce\Catalog\Provider\Persistence\NodeContentCommitter.cs:204
EPiServer.Commerce.Catalog.Provider.CatalogContentCommitterHandler.Delete(ContentReference contentLink) in C:\source\commerce\EPiServer.Business.Commerce\Catalog\Provider\CatalogContentCommitterHandler.cs:103
EPiServer.Commerce.Catalog.Provider.CatalogContentProvider.Delete(ContentReference contentLink, Boolean forceDelete) in C:\source\commerce\EPiServer.Business.Commerce\Catalog\Provider\CatalogContentProvider.cs:936
EPiServer.Core.Internal.DefaultContentRepository.Delete(ContentReference contentLink, Boolean forceDelete, AccessLevel access) +908
EPiServer.Commerce.Shell.Controllers.DeleteController.Delete(IEnumerable`1 contentReferences) in C:\source\commerce\EPiServer.Commerce.Shell\Controllers\DeleteController.cs:67
lambda_method(Closure , ControllerBase , Object[] ) +119
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
System.Web.Mvc.<>c_DisplayClass15.<InvokeActionMethodWithFilters>b_12() +80
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +452
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +452
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +452
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +981
System.Web.Mvc.Controller.ExecuteCore() +128
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +235
EPiServer.Shell.Web.Mvc.ModuleMvcHandler.ProcessController(IController controller) +49
EPiServer.Shell.Web.Mvc.ModuleMvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +28
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +1028
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +134