2013-10-09 3 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(); 
    } 
} 

Как я могу перевести это Fluent 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

Я знаю, что я задал этот вопрос давно, но я решил вернуться Fluent 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 ... 
Смежные вопросы