2009-08-07 8 views
0

어떻게하면 hbm이나 유창하게이 간단한 참여를 할 수 있나요?How To - 간단한 Nhibernate Join

public class Pet 
{ 
    public Pet() {} 

    public virtual int PetId { get; set; } 
    public virtual int PetTypeId { get; set; } 
    public virtual string Name { get; set; } 
} 

CREATE TABLE [dbo].[test_PetTypes](
    [PetTypeId] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [nchar](10) NOT NULL 
) ON [PRIMARY] 

CREATE TABLE [dbo].[test_Pet](
    [PetId] [int] IDENTITY(1,1) NOT NULL, 
    [PetType] [int] NOT NULL 
) ON [PRIMARY] 

SELECT  dbo.test_Pet.*, dbo.test_PetTypes.Name 
FROM   dbo.test_Pet INNER JOIN 
         dbo.test_PetTypes ON dbo.test_Pet.PetType = dbo.test_PetTypes.PetTypeId 

답변

1

이 상황은 test_PetType에서 test_Pet에 일대 매핑 집합을 요구한다. 특별히 손으로 조작하고 싶지 않으면 클래스에 ID 필드가 필요하지 않습니다 (NHibernate가 처리해야합니다). Ayende (NHibernate 기고자 중 한 명)의 위대한 게시물 here이 있습니다. '나는 그 순간에이를 테스트 할 수있는 시설이없는

<set name="Pets" table="test_PetTypes"> 
    <key column="PetId"/> 
    <one-to-many class="Pet"/> 
</set> 

, 그래서 할 수 있습니다

나는 당신의 HBM의 기본 요점이 비슷해야합니다 (Ayende의 게시물에서 적응) 생각 시나리오를 검증하십시오. <set /> 태그없이 도망 가서 대신 높은 수준에서 매핑을 추가 할 수 있습니다.