private void FixupAllocatedVehicle(BookingAllocatedVehicle previousValue) { // This is the principal end in an association that performs cascade deletes. // Update the event listener to refer to the new dependent. if (previousValue != null) { ChangeTracker.ObjectStateChanging -= previousValue.HandleCascadeDelete; } if (AllocatedVehicle != null) { ChangeTracker.ObjectStateChanging += AllocatedVehicle.HandleCascadeDelete; } if (IsDeserializing) { return; } if (AllocatedVehicle != null) { AllocatedVehicle.BookingId = Id; } if (ChangeTracker.ChangeTrackingEnabled) { if (ChangeTracker.OriginalValues.ContainsKey("AllocatedVehicle") && (ChangeTracker.OriginalValues["AllocatedVehicle"] == AllocatedVehicle)) { ChangeTracker.OriginalValues.Remove("AllocatedVehicle"); } else { ChangeTracker.RecordOriginalValue("AllocatedVehicle", previousValue); // This is the principal end of an identifying association, so the dependent must be deleted when the relationship is removed. // If the current state of the dependent is Added, the relationship can be changed without causing the dependent to be deleted. if (previousValue != null && previousValue.ChangeTracker.State != ObjectState.Added) { previousValue.MarkAsDeleted(); } } if (AllocatedVehicle != null && !AllocatedVehicle.ChangeTracker.ChangeTrackingEnabled) { AllocatedVehicle.StartTracking(); } } }
public bool Equals(BookingAllocatedVehicle other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; if (other.BookingId == 0 && BookingId == 0) return false; else return other.BookingId == BookingId; }