2013-10-09 2 views
1

변환 할 NHibernate 매핑 파일이 있습니다. 나는이 하나의 특정 케이스 붙어있어 :수식을 사용한 다 대일

<many-to-one name="LastChildRevision" update="false" not-found="ignore" access="readonly" fetch="join"> 
    <formula>(SELECT TOP(1) CHILD_REVISION.CHILD_REVISION_ID FROM CHILD_REVISION WHERE CHILD_REVISION.PARENT_ID = PARENT_ID ORDER BY CHILD_REVISION.REVISION_NUMBER DESC)</formula> 
</many-to-one> 

내 클래스가 있습니다

public virtual IList<ChildRevision> ChildRevisions { get; set; } 

public virtual ChildRevision LastChildRevision 
{ 
    get 
    { 
     return this.ChildRevisions.OrderBy(o => o.RevisionNumber).LastOrDefault(); 
    } 
} 

어떻게 유창함 NHibernate에이를 번역 할 수 있습니다? 내가하려고하면이 :

References(x => x.LastChildRevision) 
    .Formula("(SELECT TOP(1) CHILD_REVISION.CHILD_REVISION_ID FROM CHILD_REVISION WHERE CHILD_REVISION.PARENT_ID = PARENT_ID ORDER BY CHILD_REVISION.REVISION_NUMBER DESC)") 
    .Access 
    .ReadOnly() 
    .Fetch 
    .Join(); 

내가이 얻을 :

Invalid column name 'LastChildRevision_id'. 

감사합니다!

답변

1

먼저 열을 삭제 시도,하지만 난 유창함 자 NHibernate를 다시 방문하기로 결정하고, 여기에 내가 생각 해낸 무엇 :

References(x => x.LastChildRevision) 
    .Column("PARENT_ID") 
    .Not.Insert() 
    .Not.Update() 
    .Access.ReadOnly() 
    .NotFound.Ignore() 
    .Cascade.None() 
    .Formula("(SELECT TOP(1) CHILD_REVISION.CHILD_REVISION_ID FROM CHILD_REVISION WHERE CHILD_REVISION.PARENT_ID = PARENT_ID ORDER BY CHILD_REVISION.REVISION_NUMBER DESC)"); 
0

당신이 맞을 수있는 버그가있었습니다. 내가 오래 전에이 질문을 알고

References(x => x.LastChildRevision) 
    .Columns.Clear() 
    .Formula("(SELEC ...