public bool Equals(BookingPaymentBillingAccount other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; if (other.BillingAccountId == 0 && BillingAccountId == 0) return false; else return other.BillingAccountId == BillingAccountId; }
private void FixupBillingAccount(BookingPaymentBillingAccount 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 (BillingAccount != null) { ChangeTracker.ObjectStateChanging += BillingAccount.HandleCascadeDelete; } if (IsDeserializing) { return; } if (BillingAccount != null) { BillingAccount.BillingAccountId = BookingId; } if (ChangeTracker.ChangeTrackingEnabled) { if (ChangeTracker.OriginalValues.ContainsKey("BillingAccount") && (ChangeTracker.OriginalValues["BillingAccount"] == BillingAccount)) { ChangeTracker.OriginalValues.Remove("BillingAccount"); } else { ChangeTracker.RecordOriginalValue("BillingAccount", 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 (BillingAccount != null && !BillingAccount.ChangeTracker.ChangeTrackingEnabled) { BillingAccount.StartTracking(); } } }