¿Cuál es la mejor manera de comparar dos entidades marco de entidad?

Quiero saber la forma más eficiente de comparar dos entidades del mismo tipo.

Una entidad se crea a partir de un archivo xml a mano (es decir, una nueva instancia y establece manualmente las propiedades) y la otra se vuelve a revisar desde el contexto de mi objeto.

Quiero saber si los valores de propiedad son los mismos en cada instancia.

Mis primeros pensamientos son generar un hash de los valores de propiedad de cada objeto y comparar los hashes, pero ¿podría haber otra forma o una forma integrada?

Cualquier sugerencia será bienvenida.

Muchas gracias,

James

ACTUALIZAR

Se me ocurrió esto:

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;
        }
    }
}

No lo he probado todavía, es más un pensamiento para generar algunas ideas más del grupo.

Una cosa que podría ser un problema es comparar las propiedades que tienen valores de entidad, si el comparador predeterminado se compara con la referencia del objeto, entonces nunca será cierto. Una posible solución es sobrecargar el operador de igualdad en mis entidades para que se compare en la ID de entidad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta