我有一个类似这样的查询:
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>();
基本上,我需要通过B加载具有C的间接属性的A对象列表。(希望这听起来不会太混乱)
我无法让它工作,为这种“子查询”获取错误,任何想法如何编码才能工作?
修改
按查询添加订单。
错误的形式为:
无法解析属性:B.C of: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; }
}
答案 0 :(得分:0)
使用JoinQueryOver
。
错误表示您正在使用B.C
,就好像它是属性名称一样,但事实并非如此。 JoinQueryOver
使您可以通过属性的属性进行查询。
答案 1 :(得分:0)
B.C
应该是BAlias.C