2010-03-11 2 views
2

POCO에서 NHibernate에 대한 매핑을 생성하는 방법이 있습니까? 이 reply to my question는 NHibernate를 매우 흥미롭게 보입니다. 그러나 나는 내가 쉽게 NHibernate에와 호환 무언가로이 번역하고 싶은이NHibernate는 클래스로부터 매핑을 생성합니까?

public class register_email_job 
{ 
    public PK id; 
    public user_data user; 
} 

public class user_comment : BaseComment2 
{ 
    [IsNullable] 
    public user_comment parent; 
    public user_data user; 
} 

과 같이 수업을 많이 가지고 있어요. 나는 마음을 약간의 쿼리를 수정 wouldnbt하지만 속성을 사용하고 클래스를 수정하는 방법을 변경하려면 각 클래스를 재 작성하지 않는 것을 선호 어디서나 사용되는 방법을 변경해야합니다.

-edit- 저는 상속을 사용하고 user_comment는 user_comment에 대한 객체를 가지고 있습니다 (따라서 nullable이어야하는 이유는 무한히 반복되므로 null은 root 임).

답변

0

을 위해 NHibernate에 당신의 엔티티 클래스에 대한 프록시를 구성하기 위해, 당신은 당신이 아닌 개인 회원 가상 확인해야합니다. 공개 필드는 프록시 개체와 작동하지 않으므로 속성으로 변환해야합니다.

public class register_email_job 
{ 
    public virtual PK id { get; set; } 
    public virtual user_data user { get; set; } 
} 

Fluent NHibernate 클래스에서 매핑을 만들 수 있습니다. 규약에 따라 automap을 입력하거나 직접 mappers을 작성할 수 있습니다.

엔티티와 표가 기본값 인 conventions과 일치하지 않을 수 있으므로 여러 가지 방법으로이를 재정의 할 수 있습니다. classmap를 사용

, 당신의 매핑은 다음과 같습니다 그것은 엄청난 일을 걸릴 것 같은

public class register_email_job_map : ClassMap<register_email_job> 
{ 
    public register_email_job_map() 
    { 
     Id(x => x.Id); 
     References(x=> x.user); 
    } 
} 

public class user_comment_map : ClassMap<user_comment> 
{ 
    public register_email_job_map() 
    { 
     // properties from BaseComment2 
     References(x=> x.user); 
     References(x=> x.parent); 
    } 
} 
+0

우,이 보인다. 수십 개의 수업이 있습니다. 모두 간단합니다. 어쩌면 내가 기존 반사 코드를 가져 와서 출력 매핑을 조정해야합니다. 그러나이 질문은 계속되어야합니다. –

관련 문제