Ниже приведен пример реализации переопределения Object.Equals() для базового класса сущности, из которого выводятся все остальные объекты в приложении.Какова правильная реализация для GetHashCode() для классов сущностей?
Все классы сущностей имеют свойство Id, которое является нулевым int. (Это первичный ключ любой таблицы класс сущности соответствует.)
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
if (base.Equals(obj))
return true;
return Id.HasValue && ((EntityBase) obj).Id.HasValue &&
Id.Value == ((EntityBase) obj).Id.Value;
}
Учитывая эту реализацию Equals(), как вы правильно реализовать GetHashCode()?
Для записи, имеющий значение NULL для идентификатора, является ужасной идеей. Идентификаторы должны быть всегда всегда GUID и определенно не обнуляемы. –