使用NHibernate实体,你打算覆盖Equals和GetHashCode。重写==运算符以使用.Equals实现也是一个好主意吗?覆盖NHibernate中的==(相等)运算符?
1
A
回答
5
是的,这是一个更一般的.NET“最佳实践”,保持Equals()
,operator==
和GethasCode()
一致。
-2
为什么你认为在使用NHibernate时你需要重写Equals和GetHashCode? NHibernate保证在同一个ISession中访问的实体相等。请参阅文档中的Considering object identity。
修改为添加: 重新阅读问题并进行一些Google搜索后,我不得不承认,我不知道在C#中可能会覆盖等号运算符(==)。
相关问题
- 1. 覆盖运算符c#
- 2. 全局覆盖==运算符
- 3. 用qtscript覆盖运算符
- 4. OpenCL cl_float4运算符覆盖
- 5. 如何覆盖==运算符
- 6. Python覆盖+运算符
- 7. 如何覆盖C#中接口的等号运算符==?
- 8. Ruby中的覆盖==运算符
- 9. 覆盖sqlalchemy中的__eq__运算符
- 10. 覆盖python中的所有运算符
- 11. 在C++中覆盖=运算符
- 12. clojure - 本地覆盖运算符(例如“+”,“*”等)的正确方法
- 13. 覆盖的运算符<< in C++
- 14. 覆盖python类上的__or__运算符
- 15. 当相等运算符被覆盖时通过引用比较两个对象
- 16. ==运算符无法与覆盖等于方法
- 17. Haskell中的树相等运算符
- 18. 跨命名空间覆盖运算符
- 19. Dart覆盖一元减运算符
- 20. nhibernate softdelete覆盖
- 21. C++运算符重载是相等的运算符
- 22. 与NHibernate中的null进行比较时,强制相等运算符
- 23. 不覆盖比较运算符的Python对象是否等于自己?
- 24. 在AS3中,如何覆盖[]运算符的setters和getters?
- 25. 如何在Ruby中覆盖常规的二元运算符,如+, - ,*,/?
- 26. 有什么优势可以覆盖ORM中的==运算符?
- 27. 如何覆盖C++模板子类中的转换运算符?
- 28. 如何覆盖模板中的运算符
- 29. 覆盖Rprofile.site中的*运算符以处理整数溢出
- 30. 堆中的对象和覆盖索引运算符
1.您可能要完全忽略持久性。这就是为什么我们首先使用ORM。 2.当同一实体的两个实例不相等时,这很奇怪。 3.您希望能够使用集合,如集合 4.您希望您的代码在没有NHibernate的情况下表现得相同。这意味着你不能依赖ISession – Paco 2009-04-17 18:47:16