次のような 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 のリストを取得し、count メソッドまたはサブクエリを使用して 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 個以上のフィールドがある可能性があるためです...
ありがとうございました。