我有一个像这样的 DTO 对象:
public class TreeViewDTO
{
public string Value { get; set; }
public string Text { get; set; }
public bool HasChildren { get; set; }
}
我用 Nhibernate 映射的实体是:
public class Entity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Entity Parent { get; set; }
/* other properties */
}
我想知道,如何获取我的 DTO 列表并使用计数方法或子查询填充 HasChildren 属性以了解是否有孩子?
我试过这个,但不起作用:
return Session.QueryOver<Entity>
.Select(entity => new TreeViewViewModel() {
Value = entity.Id.ToString(),
Text = entity.Name,
HasChildren = (Session.QueryOver<Entity>().Where(x => x.ParentId == entity.Id).RowCount() > 0)})
.ToList();
我有一个例外:NotSupportedException
并且消息说:x => (x.Parent.Id == [100001].Id)
并且它不受支持。
如何创建查询来填充此属性?
PS:我想查询只选择 Id、Name 和 Count……因为我的实体可以有 30 个或更多字段……
谢谢你。