-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Labels
Description
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);Reactions are currently unavailable