2010-06-03 3 views
0

는이 전 테이블이 있다고 가정 해 봅시다 :유창함 자 NHibernate : 다른 이름으로 열을 매핑

Project 
Id 
Title 
ProjectManagerId 
ContactId 
ProjectManagerId 및 ContactID가이 사람이라는 테이블에서 모두 ID의 있습니다

:

Person 
PersonId 
Firstname 
Lastname 

이 어떻게 매핑 할 수는 이 두 개의 열은 person 객체를 생성합니까? (자동 매핑 또는 유창한 일반 매핑을 사용).

감사

답변

2

그냥 두 개의 클래스를 만드는 등 :

public class Person 
{ 
    public virtual int PersonId { get; set; } 

    public virtual string FirstName { get; set; } 

    public virtual string Surname { get; set; } 
} 


public class Project 
{ 
    public virtual int ProjectId { get; set; } 

    public virtual string Title { get; set; } 

    public virtual Person ProjectManager { get; set; } 

    public virtual Person Contact { get; set; } 
} 

하고 사람 :)보다 더 흥미로 프로젝트에 대한 매핑 클래스

public class ProjectMap : ClassMap<Project> 
{ 
    public ProjectMap() 
    { 
     Id(x => x.ProjectId); 
     Map(x => x.Title); 
     References(x => x.ProjectManager); 
     References(x => x.Contact); 
    } 
} 

당신이 FNH

매핑 재정의를 사용하는 경우

public class ProjectMappingOverride : IAutoMappingOverride<Project> 
{ 
    public void Override(AutoMapping<Project> mapping) 
    { 
     mapping.Id(x => x.ProjectId); //Usually for Id I have a convention, and not define it here 
     mapping.Map(x => x.Title); //Also for simple properties. You could remove these lines if you have setup the conventions. 
     mapping.References(x => x.ProjectManager); 
     mapping.References(x => x.Contact); 
    } 
} 

협약에 대한 다른 구성을 잊지 마세요 :)

+0

Aaah, 나는 참고 문헌에 대해 읽었지만 사용 방법을 잘 모르고있었습니다. 그 자리에 충돌했다! 감사! – Allov

1

글쎄, 내가 무엇을 할 것이라고하는 것은 당신을 일반 테이블로, 그 매핑 한 다음 원하는 데이터를 포함하는 "사람"이라는 전망을 만들고하는 것입니다.

+0

그래, 나는 이것에 대해 생각해 봤지만 더 나은 해결책이 있는지 알고 싶었습니다. Isuru의 첫 번째 장소에서 싶었던 것, 감사합니다! – Allov