NHibernate Queryover-如何仅返回子集合

NHibernate Queryover-如何仅返回子集合,nhibernate,queryover,Nhibernate,Queryover,我在下面的nhibernate queryover查询中遇到了困难。我可能把事情复杂化了,但问题是: 我有一个名为AuctionStatistic的实体链接到拍卖(这是单向的,我没有从拍卖返回到统计的链接) 我想查询统计表,找到所有拍卖ID,并仅收回那些满足某个阈值的拍卖ID,即按视图排名的前500名拍卖 一旦我得到了top X(在本例中,我硬编码到10000个视图),我想收回拍卖id和名称。对于这个特定的查询,我不需要存储在统计表中的任何数据(尽管这在其他地方使用并且不是多余的) 我想我可

我在下面的nhibernate queryover查询中遇到了困难。我可能把事情复杂化了,但问题是:

  • 我有一个名为AuctionStatistic的实体链接到拍卖(这是单向的,我没有从拍卖返回到统计的链接)
  • 我想查询统计表,找到所有拍卖ID,并仅收回那些满足某个阈值的拍卖ID,即按视图排名的前500名拍卖
  • 一旦我得到了top X(在本例中,我硬编码到10000个视图),我想收回拍卖id和名称。对于这个特定的查询,我不需要存储在统计表中的任何数据(尽管这在其他地方使用并且不是多余的)
我想我可以使用下面这样的东西来获取拍卖,但是因为我查询的是AuctionStatistic,所以它希望所选的值是AuctionStatistic类型(或其列表)

var auctions=\u session.QueryOver().Where(c=>c.ViewCount>10000).Fetch(x=>x.Auction).Eager.Select(x=>x.Auction);
有人能提出更好的方法吗

谢谢


JP

如果没有双向,这可能是你最好的选择

Auction auctionAlias = null;
AuctionDTO dto = null;

var auctionDtos = _session.QueryOver<AuctionStatistic>()
    .Where(c => c.ViewCount > 10000)
    .JoinAlias(x => x.Auction, () => auctionAlias)
    .SelectList(list => list
        .Select(() => auctionAlias.id).WithAlias(() => dto.id)
        .Select(() => auctionAlias.name).WithAlias(() => dto.name))
    .TransformUsing(Transformers.AliasToBean<AuctionDTO>())
    .List<AuctionDTO>();
auctionAlias=null;
AuctionDTO dto=null;
var auctionDtos=\u session.QueryOver()
.其中(c=>c.ViewCount>10000)
.JoinAlias(x=>x.Auction,()=>auctionAlias)
.SelectList(list=>list
。选择(()=>auconationalias.id)。使用别名(()=>dto.id)
。选择(()=>auconationalias.name)。使用别名(()=>dto.name))
.TransformUsing(Transformers.AliasToBean())
.List();

如果没有双向,这可能是您最好的选择

Auction auctionAlias = null;
AuctionDTO dto = null;

var auctionDtos = _session.QueryOver<AuctionStatistic>()
    .Where(c => c.ViewCount > 10000)
    .JoinAlias(x => x.Auction, () => auctionAlias)
    .SelectList(list => list
        .Select(() => auctionAlias.id).WithAlias(() => dto.id)
        .Select(() => auctionAlias.name).WithAlias(() => dto.name))
    .TransformUsing(Transformers.AliasToBean<AuctionDTO>())
    .List<AuctionDTO>();
auctionAlias=null;
AuctionDTO dto=null;
var auctionDtos=\u session.QueryOver()
.其中(c=>c.ViewCount>10000)
.JoinAlias(x=>x.Auction,()=>auctionAlias)
.SelectList(list=>list
。选择(()=>auconationalias.id)。使用别名(()=>dto.id)
。选择(()=>auconationalias.name)。使用别名(()=>dto.name))
.TransformUsing(Transformers.AliasToBean())
.List();

你能把它做成双向的吗?我认为,如果你选择这样的对象,它只会拉拍卖的id。如果您只需要id和名称,我会将其投影到dto中。您能使其双向吗?我认为,如果你选择这样的对象,它只会拉拍卖的id。如果您只需要id和名称,我会将其投影到dto中。