2009-04-17 4 views

ответ

-2

Почему вы считаете, что вам нужно переопределить Equals и GetHashCode при использовании NHibernate? NHibernate гарантирует равенство сущности для любого объекта, доступного в том же ISession. См. Considering object identity в документации.

Отредактировано для добавления: После повторного чтения вопроса и выполнения некоторых поисковых запросов, я должен признать, что не знал, что оператор равенства (==) может быть переопределен в C#.

+0

1. Вы можете вообще игнорировать настойчивость. Вот почему мы используем ORM в первую очередь. 2. Это довольно странно, когда два экземпляра одного и того же объекта не равны. 3. Вы хотите иметь возможность использовать коллекции, такие как наборы 4. Вы хотите, чтобы ваш код вел себя так же без NHibernate. Это означает, что вы не можете полагаться на идентификационную карту в ISession. – Paco

+0

Не согласны ли вы с тем, что NHibernate не требует применения Equals и GetHashCode? Это был вопрос, не так ли? Является ли это лучшей практикой в ​​целом (imo: yes для типов значений, возможно, для ссылочных типов) - это другой вопрос. –

+0

Причины переопределения равных и GetHashCode связаны с http://www.derickbailey.com/2008/03/24/NHibernateBestPracticesALWAYSOverrideEqualsAndGetHashCode.aspx – mcintyre321

Смежные вопросы