我有简单的课程:
public class Order
{
public int Id {get;set;}
public IList<Name> Names{get;set;}
}
public class Name
{
public int Id {get;set;}
public int LangId {get;set;}
public string LocalName {get;set;}
}
该问题是如何查询Order
的子集合以获取所有具有一些Order.Names.LocalName(类似于此)的内容:
IList<Order> orders = repository.GetByProductLocalName("laptop");
我想使用新的NH3功能QueryOver,而不是使用Linq(我在SO中找到了一些解决方案,但它们都使用了Linq)。
答案 0 :(得分:9)
您需要做的就是为Names集合声明一个别名变量,然后您可以在where子句中使用它...
String localName = "laptop";
Name namesAlias = null;
return session.QueryOver<Order>()
.JoinAlias(x => x.Names, () => namesAlias)
.Where(() => namesAlias.LocalName == localName)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Order>();