2010-04-15 2 views
5

지난 여름 나는 how to add new object to an IList mapped as a one-to-many with NHibernate에 관한 질문을했다. 답변 중 하나는 documentation이 단락에 저를 보자NHibernate의 인덱스 된 컬렉션과의 양방향 일대 다 연관

NHibernate에가 (목록지도 또는 배열) 인덱스 컬렉션 양방향 일대 다 연결을 지원하는 "다"마지막으로하지 않습니다 유의하시기 바랍니다 , 당신은 세트 또는 가방 매핑을 사용해야합니다. 나는이 단락의 말씀을 이해하고 확신 동안

, 나는 이유 또는 얼마나는이 문제를 해결 할 생각이 없다.

  1. 왜 NHibernate에 작업을 수행합니다 내가 지금 다시 "인덱스 컬렉션 양방향 one-to-many 연관"을 요구하는 것 같은 모델을하고 있어요, 나는 시간이 후속 질문에 대한 권리라고 생각 했어요 연결에이 제한이 있습니까? NHibernate 뒤에있는 사람들이 꽤 똑똑하다는 인상이 들었습니다. 그래서 나는 꽤 좋은 이유가 있다고 가정합니다.

  2. 이 단점에 대한 일반적인 해결 방법은 무엇입니까? 컬렉션을 색인화되지 않은 가방으로 만들고 명시적인 Position 속성을 자식 클래스에 추가 하시겠습니까? 더 나은 솔루션?

답변

5

이 4 개월 전에 질문을 받았다, 그래서 당신이 있다면

양방향 인덱스 연결을 지원하지 않는 개념적 이유는 간단하다 여전히 관심 :-) 나도 몰라 : 인덱스는 의미가 있습니다 한 방향으로.

예를 들어 IList<Line> 유형의 Lines 속성이있는 Invoice 클래스를 예로 들어 보겠습니다.

설정 line.Invoice = anInvoice은 목록 색인을 결정할 수 없으므로 의미가 없습니다. NHibernate에 두 개의 서로 다른 관계로 양방향 관계 "보고"마음에

유지 (측면 inverse="true"에 따라서 필요하지 그것을 유지 담당)

이 해결 방법은 당신이 제안 정확히입니다 : [위치/색인/etc 속성을 자식 클래스에 추가하십시오.