/// <summary> /// Equals the specified other. /// </summary> /// <param name="other">The other.</param> /// <returns>bool.</returns> public virtual bool Equals(BaseDeletableModel <TKey> other) { if (other == null) { return(false); } if (ReferenceEquals(this, other)) { return(true); } if (IsTransient(this) || IsTransient(other) || !Equals(this.Id, other.Id)) { return(false); } var otherType = other.GetUnproxiedType(); var thisType = this.GetUnproxiedType(); return(thisType.IsAssignableFrom(otherType) || otherType.IsAssignableFrom(thisType)); }
/// <summary> /// Determines whether the specified object is transient. /// </summary> /// <param name="obj">The object.</param> /// <returns> /// <c>true</c> if the specified object is transient; otherwise, <c>false</c>. /// </returns> private static bool IsTransient(BaseDeletableModel <TKey> obj) => obj != null && Equals(obj.Id, default(int));