С объектами NHibernate вы должны переопределить Equals и GetHashCode. Является ли хорошей идеей переопределить оператор ==, чтобы использовать также реализацию .Equals?Оператор переопределения == (равенство) в NHibernate?
1
A
ответ
5
Да, это более общая «наилучшая практика» для поддержания постоянного соответствия Equals()
, operator==
и GethasCode()
.
-2
Почему вы считаете, что вам нужно переопределить Equals и GetHashCode при использовании NHibernate? NHibernate гарантирует равенство сущности для любого объекта, доступного в том же ISession. См. Considering object identity в документации.
Отредактировано для добавления: После повторного чтения вопроса и выполнения некоторых поисковых запросов, я должен признать, что не знал, что оператор равенства (==) может быть переопределен в C#.
Смежные вопросы
- 1. NHibernate, прокси и равенство
- 2. nHibernate (a == b) равенство
- 3. Равенство Оператор тонкие отличия
- 4. Оператор удаления переопределения
- 5. оператор переопределения с qtscript
- 6. Оператор переопределения C#
- 7. Оператор переопределения присваивания в JS
- 8. NHibernate - NHibernate распознает равенство объектов и изменение, соответственно, сохраняет поведение?
- 9. Оператор и метод Splat переопределения
- 10. Оператор индекса переопределения для смещения
- 11. Оператор переопределения по пространствам имен
- 12. Оператор переопределения C++ const char *
- 13. Оператор if для переопределения класса
- 14. Оператор переопределения C++ и этот
- 15. Если оператор, проверяющий равенство NSString, используя ==
- 16. Swift 3, настройте оператор равенства = =? (Не равенство, «==»)
- 17. Оператор переопределения загрузки карты рефакторинга в XNA
- 18. Равенство HashSet C#
- 19. Равенство в java
- 20. цикл вместе с, если оператор переопределения PHP
- 21. Равенство объектов в Python
- 22. Оператор переопределения >> для класса струн
- 23. Оператор переопределения C++ = вызов метода ToInt()
- 24. Строгое равенство гарантирует свободное равенство
- 25. Java if statement равенство
- 26. Равенство по ограничениям
- 27. Как проверить ссылочное равенство для типа, реализующего оператор равенства?
- 28. Оператор переопределения C++ << в унаследованном классе
- 29. Как вставить функцию переопределения в оператор if else
- 30. Оператор присваивания переопределения в Lua с API C#
1. Вы можете вообще игнорировать настойчивость. Вот почему мы используем ORM в первую очередь. 2. Это довольно странно, когда два экземпляра одного и того же объекта не равны. 3. Вы хотите иметь возможность использовать коллекции, такие как наборы 4. Вы хотите, чтобы ваш код вел себя так же без NHibernate. Это означает, что вы не можете полагаться на идентификационную карту в ISession. – Paco
Не согласны ли вы с тем, что NHibernate не требует применения Equals и GetHashCode? Это был вопрос, не так ли? Является ли это лучшей практикой в целом (imo: yes для типов значений, возможно, для ссылочных типов) - это другой вопрос. –
Причины переопределения равных и GetHashCode связаны с http://www.derickbailey.com/2008/03/24/NHibernateBestPracticesALWAYSOverrideEqualsAndGetHashCode.aspx – mcintyre321