2011-04-19 2 views
1

나는 다음과 같은 매핑 클래스가 : 이제 다음 테스트가 실패C# NHibernate에 가입 ​​- 서브 클래스 가져 오기 문제

<class name="Company" table="Company"> 
     <id name="ID" column="CompanyID"> 
      <generator class="native"/> 
     </id> 
     <joined-subclass name="CompanyAccounting" table="company_accounting" lazy="true"> 
      <key column="CompanyID"/> 
     </joined-subclass> 
     <joined-subclass name="CompanyCarbon" table="company_carbon" lazy="true"> 
      <key column="CompanyID" /> 
     </joined-subclass> 
    </class> 

을 :

 var company = CompanyAdapter.Get<Company>(_session, 32); 
     Assert.IsNotNull(company); 

     var client = CompanyAdapter.Get<CompanyClient>(_session, 32); 
     Assert.IsNotNull(client); 

그러나 다음과 같은 성공 :

 var client = CompanyAdapter.Get<CompanyClient>(_session, 32); 
     Assert.IsNotNull(client); 

     var company = CompanyAdapter.Get<Company>(_session, 32); 
     Assert.IsNotNull(company); 

을 첫 번째 테스트가 실패하는 이유는 NHibernate가 CompanyAccounting으로 회사를 검색하기 때문입니다. Company (32)는 모두 accoun입니다 ting 회사와 클라이언트, 그리고 Session.Get을 호출 한 후 CompanyAccounting으로 회사를 검색하면 데이터베이스로 돌아 가지 않고 CompanyClient에 대한 항목이 있는지 확인합니다. 회사는 하위 클래스에만있을 수 있다고 가정합니다. 어쨌든 모든 하위 클래스에서 상속받을 수 있다고 지정하는 것입니까?

답변

0

난, 오히려

클래스 회사, 클래스 CompanyClient하는 것보다 최대 내 수업을 리팩토링 한 일을 종료하는 것 : 회사, 클래스 CompanyAccounting : 회사 나는 CompanyClient을 만든 회사에서 상속하지 CompanyAccounting

을, Company를 해당 클래스의 기본 키인 <one-to-one> 관계로 추가했습니다.