2009-07-02 9 views
0

NHibernate를 사용하여 속성의 속성을 설정하려면 어떻게해야합니까? 내가 매핑을 작성하려는NHibernate에서 속성의 속성을 설정하는 방법

table Person { 
    FirstName varchar, 
    LastName varchar 
} 

: 여기

public class Person 
{ 
    private FullName _subClassProperty = new FullName(); 

    public FullName Name 
    { 
     get { return _subClassProperty; } 
     set { return _subClassProperty; } 
    } 
} 

public class FullName 
{ 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
} 

사람은 다음과 같습니다 데이터베이스 테이블에 직렬화 (! 단지 예) 예입니다 Person 클래스를위한 클래스. 그래서 NHibernate는 serializi가 실행될 때 Person의 FullName 속성의 FirstName과 LastName 프라퍼티에 접근 할 것이다. 사람을 역 직렬화/역 직렬화합니다. I 은 FullName 클래스를 인스턴스화하기 위해 NHibernate를 원한다. Person 클래스는 여전히 FullName 클래스의 인스턴스를 담당해야한다.

나는 이것이 IPropertyAccessor를 사용하여 가능하다고 생각하지만, 이것을 달성하는 방법에 대한 많은 문서를 찾을 수 없습니다. 누군가가 NHibernate 초보자를 도울 수 있습니까?

답변

2

이것은 NHibernate 구성 요소의 고전적인 사용 사례입니다.

<component name="FullName" class="YourNamespace.FullName, YourAssembly"> 
    <property name="FirstName" type="String" /> 
    <property name="LastName" type="String" /> 
</component> 

당신이 유창함 사용하는 경우 :이 같은 XML, 뭔가를 사용하여 매핑하는 경우

Component(p => p.FullName, m => 
{ 
    m.Map(p => p.FirstName); 
    m.Map(p => p.LastName); 
}); 
+0

아 확인 멋진, 나는 그것을 시도 할 것이다. 약간의 문서에서부터 필자는 구성 요소가 제 시나리오에 사용되었지만 거꾸로 사용되는 것으로 생각했습니다. 하나의 클래스에 매핑하려는 두 개의 테이블이있는 곳에서 생각했습니다. – cbp

관련 문제