NHibernate 엔티티를 사용하면 Equals와 GetHashCode를 오버라이드 (override) 할 수 있습니다. .Equals 구현을 사용하려면 == 연산자를 재정의하는 것이 좋습니다.NHibernate에서 == (항등식) 연산자를 재정의 하시겠습니까?
1
A
답변
5
예, Equals()
, operator==
및 GethasCode()
을 일관되게 유지하는 것이 더 일반적인 .NET "최상의 방법"입니다.
Guidelines for Overloading Equals() and Operator ==을 참조하십시오.
-2
왜 NHibernate를 사용할 때 Equals와 GetHashCode를 재정의해야한다고 생각하십니까? NHibernate는 동일한 Session 내에서 액세스되는 모든 엔티티에 대한 엔티티 평등을 보장합니다. 설명서의 Considering object identity을 참조하십시오.
덧붙여 편집 : 질문을 다시 읽고 약간의 인터넷 검색을 한 후에 C#에서 항등 연산자 (==)를 재정의 할 수 있다는 것을 알지 못했습니다.
1. 지속성을 전혀 무시하고 싶을 수 있습니다. 이것이 바로 ORM을 사용하는 이유입니다. 2. 동일한 엔티티의 두 인스턴스가 동일하지 않은 경우 오히려 이상합니다. 3. 집합 같은 집합을 사용할 수 있기를 원합니다 4. NHibernate없이 코드가 같은 방식으로 동작하게합니다. 즉, 당신은 ISession의 identitymap에 의지 할 수 없다는 것을 의미합니다. – Paco
NHibernate가 Equals와 GetHashCode를 구현할 필요가 없다는 것에 동의하지 않습니까? 그게 질문 이었나요? 일반적으로 모범 사례 (값 유형의 경우 예 : 참조 유형의 경우 가능)는 다른 질문입니다. –
Equals 및 GetHashCode를 재정의하는 이유는 http://www.derickbailey.com/2008/03/24/NHibernateBestPracticesALWAYSOverrideEqualsAndGetHashCode.aspx에서 링크됩니다. – mcintyre321