private void FixupCustomer(Customer previousValue) { if (IsDeserializing) { return; } if (previousValue != null && previousValue.Accounts.Contains(this)) { previousValue.Accounts.Remove(this); } if (Customer != null) { if (!Customer.Accounts.Contains(this)) { Customer.Accounts.Add(this); } } if (ChangeTracker.ChangeTrackingEnabled) { if (ChangeTracker.OriginalValues.ContainsKey("Customer") && (ChangeTracker.OriginalValues["Customer"] == Customer)) { ChangeTracker.OriginalValues.Remove("Customer"); } else { ChangeTracker.RecordOriginalValue("Customer", previousValue); } if (Customer != null && !Customer.ChangeTracker.ChangeTrackingEnabled) { Customer.StartTracking(); } FixupCustomerKeys(); } }