Каков наилучший способ сравнить две сущности каркаса сущностей?

Я хочу узнать наиболее эффективный способ сравнения двух объектов одного типа.

Одна сущность создается из XML-файла вручную (т. Е. Новый экземпляр и свойства, заданные вручную), а другая извлекается из контекста моего объекта.

Я хочу знать, одинаковы ли значения свойств в каждом случае.

Мои первые мысли состоят в том, чтобы сгенерировать хэш значений свойств для каждого объекта и сравнить хэши, но может быть другой или встроенный способ?

Любые предложения приветствуются.

Большое спасибо

Джейм

ОБНОВИТ

Я придумал это:

static class ObjectComparator<T>
{
    static bool CompareProperties(T newObject, T oldObject)
    {
        if (newObject.GetType().GetProperties().Length != oldObject.GetType().GetProperties().Length)
        {
            return false;
        }
        else
        {
            var oldProperties = oldObject.GetType().GetProperties();

            foreach (PropertyInfo newProperty in newObject.GetType().GetProperties())
            {
                try
                {
                    PropertyInfo oldProperty = oldProperties.Single<PropertyInfo>(pi => pi.Name == newProperty.Name);

                    if (newProperty.GetValue(newObject, null) != oldProperty.GetValue(oldObject, null))
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }

            return true;
        }
    }
}

Я еще не проверял, это скорее пища для размышлений, чтобы генерировать еще несколько идей из группы.

Одной из проблем, с которой можно столкнуться, является сравнение свойств, которые сами имеют значения сущностей. Если компаратор по умолчанию сравнивает ссылку на объект, это никогда не будет истинным. Возможное решение - перегрузить оператор равенства в моих сущностях, чтобы он сравнивался по идентификатору сущности.

Ответы на вопрос(1)

Ваш ответ на вопрос