Skip to content

Merge Changes must ignore deleted items if not persisted #199

@noufionline

Description

@noufionline

Hi Tony,

I am facing an issue with the change tracker.

If a user adds a record and then changes his mind and deletes it, ChangeTracker should not keep a reference to this item in the tracker.

Please see the code snippet extracted from your demo.

var createdOrder = CreateOrder(client, newOrder, formatter);
            PrintOrderWithDetails(createdOrder);

            // Update the order
            Console.WriteLine("\nPress Enter to update order details");
            Console.ReadLine();

            // Start change-tracking the order
            var changeTracker = new ChangeTrackingCollection<Order>(createdOrder);

            // Modify order details
            createdOrder.OrderDetails[0].UnitPrice++;
            createdOrder.OrderDetails.RemoveAt(1);
            var newItem = new OrderDetail
            {
                OrderId = createdOrder.OrderId,
                ProductId = 3,
                Quantity = 15,
                UnitPrice = 30
            };
            createdOrder.OrderDetails.Add(newItem);
           //Problem occures after this deletion which is not persisted yet in the database.
            createdOrder.OrderDetails.Remove(newItem);
            
           // At this point neither change tracker deleted collection nor the orderDetails collection has the deleted item.
            // Submit changes
            var changedOrder = changeTracker.GetChanges().SingleOrDefault();
           // Once the GetChanges called OrderDetails is again populated with Deleted Item
            var updatedOrder = UpdateOrder(client, changedOrder, formatter);

            // Merge changes
            changeTracker.MergeChanges(updatedOrder);

           // After merge changes only 2 records must be available but its shows 3. The deleted item which is not persisted in the database is still shown

            Console.WriteLine("Updated order:");
            PrintOrderWithDetails(createdOrder);

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions