public virtual bool Equals(BaseEntity obj) { if (obj == null) return false; if (ReferenceEquals(this, obj)) return true; if(!IsTransient(this) && !IsTransient(obj) && Equals(this.Id, obj.Id)) { var thisType = this.GetType(); //// Khác ở đây var otherType = obj.GetType(); return thisType.IsAssignableFrom(otherType) || otherType.IsAssignableFrom(thisType); } return false; }
/// <summary> /// Kiểm tra đối tượng có là tạm thời ko ( ID = 0) /// </summary> public static bool IsTransient(BaseEntity obj) { return obj != null && Equals(obj.Id, default(int)); }