TrackLog
의 구성 요소 컬렉션이 TrackPoints
인 엔티티가 있습니다. TrackLog
을 새로 만들고 Trackpoints
을 추가하고 DB에 저장하십시오. 내 TrackLog
다시 잡아 내가 예상처럼 대신 하나의 SQL INSERT를 수행하는, 새로운 TrackPoint
을 추가 할 때, 다시 추가 수집에있어 모든 TrackPoint
을 다음 TrackLog
와 관련된 모든 TrackPoints
에서 삭제하고하고있어NHibernate를 사용하여 SQL DELETE를 수행하고 INSERT 할 구성 요소 컬렉션이있는 엔티티를 저장하고 있습니까?
.
이 NHProf의 출력입니다 : 구성 요소의 모음이 정상 동작은
UPDATE TrackLog SET Version = 2 etc...
DELETE FROM TrackPoints WHERE TrackLog_Id = '80cc1e0d' etc...
INSERT INTO TrackPoints etc..
INSERT INTO TrackPoints etc...
INSERT INTO TrackPoints etc...
내 질문은이 무엇입니까? 이것은 내 enum 컬렉션에서도 마찬가지입니다. 이것이 정상적인 동작이 아닌 경우 올바른 동작을 보이도록 매핑을 수정하려면 어떻게해야합니까? (TrackPoint
에 INSERT를 한 개만 추가 했습니까?)
감사합니다, (같은 데이터를 두 개의 트랙 포인트가 될 수 없다 예) I 방금 나 같은 결론에 도달했습니다. 명심해야 할 또 다른 점은 구성 요소가 Equals()와 GetHashCode()를 오버라이드해야한다는 것입니다. 그렇지 않으면 성능이 더욱 떨어집니다 (하나의 DELETE 문이 아니라 각 항목에 대해 DELETE가 생성 된 다음 INSERT 각각 다시). –
네, 맞습니다. 구성 요소에는 식별자가 없으므로 의미가 있습니다. NH가이를 구분할 수있는 유일한 방법입니다. –