У меня есть объект DTO как это:Наполните свойство DTO с подзапрос в NHibernate Query
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 с помощью метода count или подзапроса, чтобы узнать, есть ли дети?
Я попытался это, но не работает:
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 полей или больше ...
спасибо.
Значит, нет собственности 'Entity.Children'? –
Нет, в моем классе «Entity» у меня есть свойство Parent, которое реферирует другой объект (не обязательно тот же тип). Я просто хотел бы знать, есть ли Дети, которые ссылаются на Сущность, о которой идет речь. –
Я не слишком хорошо знаком с NHibernate, но разве вы не должны использовать 'Session.Query' с linq? –