2010-12-17 5 views
0

왜 자녀와 부모를위한 관계를 추가해야합니까?관계를 추가하는 방법 (nhibernate)

 
Child child = Session.Get(1); 
Parent parent = Session.Load(1); 
parent.Children.Add(child); 
child.Parent = parent; 

사용 역 = true의 경우 그것은 parent.Children.Add (아이)없이 완벽하게 작동하고 나는 현재 세션 (웹 요청 당 세션) 어린이의 수집이 필요하지 않습니다. 당신은 항상 자녀와 부모를위한 관계를 추가합니까?

답변

2

설정 child.Parent = parent은 관계를 유지하기에 충분합니다.

그러나 컬렉션에 자식을 추가하지 않으면 계단식 연결을 사용할 수 없으므로 자식을 명시 적으로 유지해야합니다.

또한 양쪽면 중 하나를 설정하지 않으면 일관성이없는 메모리 모델이됩니다 (다시로드하지 않으면 어린이가 컬렉션에 추가되지 않으므로).

2

나는 당신을 올바르게 이해하기를 바랍니다.

class Parent { List Children {get;set;} class Child { Parent Parent {get;set;}

ANS1. 이 시나리오에서 Inverse는 nhibernate 프레임 워크에 [부모 - 자식] 관계의 제어 메커니즘을 자식에게 남겨 둡니다 (대부분 어떤 개체가 자식 삭제/업데이트를 담당하는지). Children 속성에 Inverse 속성 사용 Child는 자체에 책임이 있고, 그렇지 않으면 Parent가 Child를 삭제해야합니다.

ANS2. 대부분의 경우 두 속성 (Children, Parent)이 필요하지 않습니다 (자식에 inverse = true를 지정하면 필요합니다). 그것은 단지 원하는 기능에 달려 있습니다.

질문에 대한 답변이 간단합니까?

관련 문제