NHibernate: Razões para substituir Equals e GetHashCode

Existem razões pelas quais Equals ou GetHashCode devem ser substituídos em entidades ao usar o NHibernate? E em quais cenários esses motivos são válidos?

Alguns motivos que podem ser encontrados na web:

Suporte para carregamento lento. Comparar objetos proxy através do método Equals padrão pode levar a erros inesperados. Mas isso deve ser resolvido pelo mapa de identidade (e realmente é em muitos casos), não deveria? Ao trabalhar com entidades de uma única sessão, tudo deve funcionar bem, mesmo sem substituir Equals / GetHashCode. Existem casos em que o mapa de identidade não desempenha bem o seu papel? É importante para as coleções do NHibernate. Existem casos em que a implementação padrão do GetHashCode não é suficiente (não incluindo problemas relacionados à igualdade)?Misturar entidades de várias sessões e entidades desanexadas. É uma boa ideia fazer isso?

Algumas outras razões?

questionAnswers(2)

yourAnswerToTheQuestion