Skip to content

Merge Changes must ignore deleted items if not persisted #199

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);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions