Почему вы считаете, что вам нужно переопределить Equals и GetHashCode при использовании NHibernate? NHibernate гарантирует равенство сущностей для любой сущности, доступ к которой осуществляется в одной и той же ISession. См. С учетом идентичности объекта в документации.
Отредактировано, чтобы добавить:
Перечитав вопрос и занявшись поиском, я должен признать, что понятия не имел, что оператор равенства (==) может быть переопределен в C #.