Hi, I am developing “Gift shopping” web API project, with Entity Framework Code first approach.
In this, I need to add details from shopping cart table to Order table
Order table contains a filed Order Reference in this I need to store string as “Ref-1”(1 means OrderId).
Then add data from Order table to OrderItem table with Order Id.
OrderItem table contains field Order Reference, in this I need to store Order Reference of Order table with count(increased by 1)
Below is the code I tried, this works file when inserting data. But when update , it throws exception as
“Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.”
I need to perform these operation in single transaction that means should use only one unitofwork.commit().
//Insert into Order table
var InsertOrder = _Mapper.Map<InsertOrderRequest, Order>(insertOrderRequest);
if (approvalstatus == false)
InsertOrder.ApprovalStatusId = (int)enumApprovalStatus.Approved;
else
InsertOrder.ApprovalStatusId = (int)enumApprovalStatus.WaitingForApproval;
InsertOrder.CreatedDate = System.DateTime.Now;
InsertOrder.OrderDate = System.DateTime.Now;
InsertOrder.OrderReference = "Ref-";
_orderRepository.Add(InsertOrder);
if (item.Quantity< 1)
{
for (int i = 0; i < item.Quantity; i++)
{
var InsertOrderItem = _Mapper.Map<CartItemDto, OrderItem>(item);
InsertOrderItem.CreatedDate = System.DateTime.Now;
InsertOrderItem.OrderId = InsertOrder.OrderId;
InsertOrderItem.Orderref = "Ref-" + InsertOrder.OrderId + "-" + (i + 1);
InsertOrderItem.Quantity = 1;
if (approvalstatus == false)
InsertOrderItem.OrderStatusId = (short)enumOrderStatus.OrderReceived;
else
InsertOrderItem.OrderStatusId = (short)enumOrderStatus.AwaitingApproval;
_orderItemRepository.Add(InsertOrderItem);
OrderItems.Add(InsertOrderItem);
}
}
InsertOrder.OrderReference = "Ref-" + InsertOrder.OrderId;
_orderRepository.Update(InsertOrder);
UnitOfWork.Commit();