2009-04-29 2 views
0

서투른 질문을 용서해주십시오. (질문을 더 잘 이해할 수 있다면 자유롭게 편집 할 수 있습니다.) 다음과 같이실종 된 상태에서 Nhibernate에서 두 클래스를 매핑하는 방법

public class SupportTicketCategory 
{ 
    public SupportTicketCategory() 
    { } 

    private int _supportTicketCategoryID; 
    public virtual int SupportTicketCategoryID 
    { 
     get { return _supportTicketCategoryID; } 
     set 
     { 
      _supportTicketCategoryID = value; 
     } 
    } 

    private string _supportTicketCategoryName; 
    public virtual string SupportTicketCategoryName 
    { 
     get { return _supportTicketCategoryName; } 
     set 
     { 
      _supportTicketCategoryName = value; 
     } 
    } 


} 

 public SupportTicket() 
    { } 

    private int _supportTicketID; 
    public virtual int SupportTicketID 
    { 
     get { return _supportTicketID; } 
     set 
     { 
      _supportTicketID = value; 
     } 
    } 

    private SupportTicketCategory _supportTicketCategory; 
    public virtual SupportTicketCategory SupportTicketCategory { get; set; } 

내 테이블 구조입니다 :

내가 두 클래스 SupportTicketCategory과 (각각) SupportTicket이

CREATE TABLE [dbo].[supporttickets](
[supportticketid] [int] IDENTITY(1,1) NOT NULL, 
[supportticketcategoryid] [int] NOT NULL, 
CONSTRAINT [PK_supporttickets] PRIMARY KEY CLUSTERED 
(
    [supportticketid] ASC 
) 
) ON [PRIMARY] 

ALTER TABLE [dbo].[supporttickets] 
WITH CHECK ADD CONSTRAINT 
[FK_supporttickets_supportticketcategories] 
FOREIGN KEY([supportticketcategoryid]) 
REFERENCES [dbo].[supportticketcategories] ([supportticketcategoryid]) 

ALTER TABLE [dbo].[supporttickets] CHECK CONSTRAINT [FK_supporttickets_supportticketcategories] 

CREATE TABLE [dbo].[supportticketcategories](
    [supportticketcategoryid] [int] IDENTITY(1,1) NOT NULL, 
    [supportticketcategoryname] [varchar](50) NOT NULL, 
CONSTRAINT [PK_supportticketcategories] PRIMARY KEY CLUSTERED 
(
    [supportticketcategoryid] ASC 
) 
) ON [PRIMARY] 

을 그러니까 기본적으로, 내가 원하는 지원 클래스에있는 것처럼 SupportTicketCategory를 SupportTicket에 매핑합니다. 그러나 fi는 사용할 수 없습니다. 적절한 매핑 유형이 무엇인지 알아 내고 interwebs에서이 예제를 찾을 수 없습니다.

업데이트 : SupportTicketCategory 속성을 이전 학교 게터 및 설정자로 변경했으며 구문 상 설탕이 손실되었습니다.

+0

그래서 내가 그것을 자신을 고정 생각 자동 취득 메소드를 구현에서 ... 나는 그것을 변경 세터를 구식 방식으로 바꾸면 효과가 있습니다. 그게 내가 필요한 모든 것이 될 수 있었습니까? – Webjedi

답변

1

NHibernate template과 함께 MyGeneration을 사용하는 경우 데이터베이스에서이를 가리키면 매핑이 이루어 지므로 어떻게 수행해야하는지 알 수 있습니다.

+0

지금 다운로드 중 ... – Webjedi

+0

기존 데이터베이스로 작업하지 않는 경우 매핑 파일에서 데이터베이스를 만드는 것이 좋습니다. 그 반대의 경우도 마찬가지입니다. 이것은 Domain Driven Development라고 불리며 도메인 클래스를 먼저 작성하고 나중에 매핑을 지정하므로 데이터베이스 스키마를 만들 수 있습니다. Nhibernates SchemaExport 도구를 사용하면이 작업을 간단하게 수행 할 수 있습니다. –

+0

스테판은 아래 예제와 같이 다 대일 매핑을 사용하도록 권장 했으므로 노력했지만 테이블을 채우는 데 여전히 SupportTicketCategory 속성을 채울 수 없습니다. – Webjedi

0

나는 당신이 찾고있는 것이 "다 대일"요소라고 생각합니다.

<many-to-one name="SupportTicketCategory" column="SupportTicketCategoryId" update="false" insert="false" /> 
+0

supportticketcategoryid = 1 인 SupportTicket과 supportTicketcategoryID = 1 인 SupportTicketCategory의 해당 레코드가 있더라도 null이 반환됩니다. 아마도 여기에 다른 작업이 있습니다. – Webjedi

+0

매핑 파일에서 정규화 된 어셈블리 이름을 사용하고 있습니까? class = "SupportTicketCategory, My.Namespace"...? – Flo

+1

실제로 작동해야하지만, 왜 update = false이고 insert = false입니까? –

0

많은 하나의 매핑은 다음과 같이 수행 할 수 있습니다 (이 SupportTicket에 대한 클래스 요소 내에 간다) :

<many-to-one name="SupportTicketCategory" class="SupportTicketCategory" not-null="false" column="SupportTicketCategoryId" /> 
관련 문제