使用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