2009-09-04 2 views
2
다음과 같이 내가 부모/자녀의 수업을 새로운 FluentNHibernate = D

간단한 FluentNHibernate의 상위/하위 매핑

:의 매핑으로

public class Parent 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual IList<Child> Children { get; set; } 
} 

public class Child 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual Parent ActiveParent { get; set; } 
} 

가 :

public ParentMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    HasMany(x => x.Children) 
     .Inverse(); 
     .Cascade.All(); 
} 

public ChildMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    //Map(x => x.ActiveParent) 
    // .Column(ParentID); 
} 

지역을 주석 아이지도의 현재 문제가있는 질문입니다. 자식 개체를 만들고 해당 부모 (즉, someChild.ActiveParent)를 호출 할 수 있지만 유창한 인터페이스를 통해이를 매핑하는 방법을 잘 모르겠습니다.

자식 테이블의 테이블 구조는 지연로드의 의도라고하면 부모 개체와 더불어, parentid을 보유하고 있습니다. 어떤 도움도 언제나 대단히 감사하겠습니다. mxmissile의 대답에 추가

답변

6
References(x => x.Parent); 
+0

그래, 분명히 그 위에 바로 날아 갔다. –

0

, 당신은 References() 콜의 마지막에 LazyLoad()을 추가 할 것입니다, 또한 당신은 당신의 구성에서이 같은 작업을 수행 할 수 있습니다 :

.Mappings(m => 
    m.FluentMappings.AddFromAssemblyOf<ParentMap>() 
     .ConventionDiscovery.Add(ForeignKey.EndsWith("ID"))) 

마지막을 라인은 오히려 기본 (Parent_Id?)에 비해 ParentID 같은 이름 외래 키를 기대 유창함 NHibernate에 지시, 그래서 당신은 더 이상 모든 관계 매핑에 명시 적으로 열 이름을 지정해야합니다.

+0

아, 구성 측면에 대한 추가 설명을 해주셔서 감사합니다. 어둠 속에서 나는 열의 매핑으로 일어나는 "마술"에 대해 조금 생각했습니다. –

+1

Fluent NHibernate에는 필요한 경우 변경/조정할 수있는 여러 가지 규칙이 있습니다. 자세한 내용은 http://wiki.fluentnhibernate.org/Conventions를 참조하십시오. –