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 ответа
Использование JoinQueryOver
,
Ошибка означает, что вы используете B.C
как будто это было имя свойства, но это не так. JoinQueryOver
позволяет запрашивать по свойству свойства.