从Function中获取NHibernate QueryOver .SelectList(x)

时间:2012-04-15 15:10:58

标签: c# nhibernate fluent-nhibernate

有没有办法从可以传入SelectList()的函数中获取成员列表?

所以不要这样做

var dtos = repository.QueryOver<MicrofilmExportProcessed>()
                    .SelectList(list => list
                        .Select(x => x.Member1).WithAlias(() => dto.Member1)
                        .Select(x => x.Member2).WithAlias(() => dto.Member2)
                        .Select(x => x.Member3).WithAlias(() => dto.Member3))
                    .List<MicrofilmExportProcessed>();

做这样的事情:

var dtos = repository.QueryOver<MicrofilmExportProcessed>()
                    .SelectList(getMembersFromFunc())
                    .List<MicrofilmExportProcessed>();

我尝试创建方法,返回与SelectList的输入参数相同的类型,但它仍然告诉我输入类型无效。不确定我错过了什么。

1 个答案:

答案 0 :(得分:8)

这样的东西
Func<QueryOverProjectionBuilder<InvoiceDto>, QueryOverProjectionBuilder<InvoiceDto>> GetList()
{
    InvoiceDto dto = null;
    return list => list.Select(w => w.Client).WithAlias(() => dto.Client);
}

并将其称为

return Session.QueryOver<InvoiceDto>()
    .SelectList(GetList())
    .TransformUsing(Transformers.AliasToBean<InvoiceDto>())
    .List<InvoiceDto>();