NHibernate仅选择父字段

时间:2014-08-14 12:51:36

标签: c# sql nhibernate

我有一个有很多B子女的父实体A.

为了提高网站的性能,我想首先按给定的ID选择父A并向用户显示。并在后台加载A的子项并在准备好后显示它们。

我当前的查询:

var result = session.QueryOver<A>().Where(a.ID = "123").List<A>();
return result.FirstOrDefault();

此查询选择并返回A及其所有孩子。

任何人都知道如何让nhibernate只加载A的字段?

使用lazy对我不好,因为我想创建另一个查询,在用户收到A后选择子项。

1 个答案:

答案 0 :(得分:0)

我创建了一个DTO类,它准确地描述了您想要的A字段:

public class ADto
{
    public int Id { get; set; }

    public string Property1 { get; set; }

    public string Property2 { get; set; }
}

然后使用QueryOver仅选择这些属性:

ADto result = null;

ADto dto = session.QueryOver<A>()
    .Where(a => a.Id == "123")
    .SelectList(list => list
        .Select(a => a.Id).WithAlias(() => result.Id)
        .Select(a => a.Property1).WithAlias(() => result.Property1)
        .Select(a => a.Property2).WithAlias(() => result.Property2)
    )
    .TransformUsing(Transformers.AliasToBeanTransformer<ADto>())
    .SingleOrDefault<ADto>();

然后编写一个单独的类似查询来检索A的孩子。