QueryException: не удалось разрешить свойство: BC из: A]

У меня есть запрос, который выглядит примерно так:

B BAlias = null;
C CAlias = null;

session.QueryOver<A>().Left.JoinAlias(x => x.B, () => BAlias).Left.JoinAlias(() => B.C, () => CAlias);


Query.Where(() => CAlias == C);

Query.And(() => BAlias.Id == Guid.Parse(SearchColumn));

Query.And(x => x.SomeData == data_string);


return Query.OrderBy(() => B.Name).Desc
                                .Skip(skip)
                                .Take(take)
                                .List<A>();

По сути, мне нужно загрузить список объектов A, который имеет косвенное свойство C, через B. (Надеюсь, это не кажется слишком запутанным)

Я не могу заставить его работать, получаю ошибки по всему такому "под-подзапросу", есть идеи, как это можно закодировать для работы?

РЕДАКТИРОВАТЬ:

Добавлен порядок по запросу.

Ошибка приходит в виде:

не может разрешить собственность: BC из: A

РЕДАКТИРОВАТЬ 2:

Отображения, как показано ниже:

public void Override(AutoMapping<A> mapping)
    {
        mapping.References<B>(x => x.B).Not.Nullable().Not.LazyLoad();
    }

public void Override(AutoMapping<B> mapping)
    {
        mapping.References(x => x.C).Not.Nullable().Cascade.SaveUpdate();
    }

public void Override(AutoMapping<C> mapping)
    {
        mapping.Map(x => x.Name).CustomSqlType("VARCHAR(255)").Not.Nullable().Unique();
    }


public class A: BaseEntity<A>
{

    public virtual B B{ get; set; }
    public virtual string SomeData{ get; set; }
}


public class B: BaseEntity<B>
{

    public virtual C C{ get; set; }
    public virtual string Name{ get; set; }
}

public class C: BaseEntity<C>
{
    public virtual string Name{ get; set; }
    public virtual string Description{ get; set; }
}

2 ответа

B.C должно быть BAlias.C

Использование JoinQueryOver,

Ошибка означает, что вы используете B.C как будто это было имя свойства, но это не так. JoinQueryOver позволяет запрашивать по свойству свойства.

Другие вопросы по тегам