【问题标题】:Projecting aggregates together with Entity using NHibernate使用 NHibernate 将聚合与实体一起投影
【发布时间】:2010-10-26 23:38:48
【问题描述】:

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

Orders
[id] INTEGER
[name] ...

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

在某些情况下,我想检索订单列表以及总计摘要,但大多数时候我并不关心摘要。

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

【问题讨论】:

    标签: nhibernate projection aggregate-functions


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我相信这里的解决方案是创建一个 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]));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 1970-01-01
        相关资源
        最近更新 更多