【发布时间】:2014-08-13 16:26:19
【问题描述】:
我有以下实体:
public class Parent
{
int Id { get; set; }
string ParentName { get; set; }
List<Child> Children { get; set; }
}
public class Child
{
int Id { get; set; }
string ChildName { get; set; }
}
以及以下 dto:
public class ParentDTO
{
int Id { get; set; }
List<string> ChildrenNames { get; set; }
}
使用下面的 QueryOver 代码我可以获得父值
ParentDTO result = null;
Parent parentAlias = null;
Child childAlias = null;
var query = session.QueryOver(() => parentAlias)
.JoinAlias(() => parentAlias.Children, () => childAlias, JoinType.LeftOuterJoin)
.SelectList(list => list.Select(c => c.Id).WithAlias(() => result.Id)
.Select(c => c.ParentName).WithAlias(() => result.Name)
//this part does not work
.Select(c => c.Children .Select(v => v.ChildName)).WithAlias(() => result.ChildrenNames)
//
)
.TransformUsing(Transformers.AliasToBean<ParentDTO>());
return query.List<ParentDTO>();
但我似乎无法将 childName 值列表投影到我的 ChildrenNames 集合中。
有什么想法吗?
【问题讨论】:
-
不支持。投影可以参考定义为
many-to-one...但不是one-to-many(没有一些非常智能的自定义转换器),请查看此以了解有关问题的更多详细信息>:stackoverflow.com/questions/24517403,这是一些解决方法:stackoverflow.com/questions/17279307 -
最简单的就是在这里写两个查询:一个是获取父母,另一个是为每个父母获取孩子
标签: c# .net nhibernate orm queryover