使用NHibernate与Entity一起投影聚合

时间:2009-05-18 09:20:58

标签: nhibernate projection aggregate-functions

我有一个非常标准的Orders表和一个关联的OrderRows表,比如说:

Orders
[id] INTEGER
[name] ...

OrderRows
[orderId] INTEGER
[quantity] INTEGER
[unitPrice] SMALLMONEY
[description] VARCHAR(...)

在某些情况下,我想检索订单列表以及总计摘要,大部分时间我都不关心摘要。

使用Criteria API我可以为每个订单创建[quantity] * [unitPrice]的投影但是如何在同一结果集中同时获得Order和投影?

2 个答案:

答案 0 :(得分:0)

我相信这里的解决方案是创建一个DTO类,然后将其用作结果转换。

public class OrderDTO
{
    int Id;
    // Rest of Orders properties you want

    int LineTotal; // [quantity]*[unitPrice]

    public OrderDTO(int id, /* rest of constructor parameters */);
}

session.CreateCriteria(typeof(... /* criteria query here */))
    .SetResultTransformer(new AliasToBeanConstructorResultTransormer(typeof(OrderDTO).GetConstructors()[0]));

答案 1 :(得分:0)

您可以在实体中计算总计并将其存储在数据库中(如果您不想每次都加载所有行)。