代码之家  ›  专栏  ›  技术社区  ›  John Rutherford

如何映射NHibernate中的聚合函数?

  •  3
  • John Rutherford  · 技术社区  · 15 年前

    我是新来的NHibernate,并试图创建我的第一个映射。

    我创建了这样的类(我的示例简化了):

    public class Buyer
    {
        public int BuyerID { get; set; }
        public string Name { get; set; }
        public decimal AverageOrderAmount { get; private set; }
        public DateTime LastOrderDate { get; private set; }
    }
    

    通常,为了从SQL Server中获取这些数据,我会使用如下聚合函数编写一个查询:

    选择b.buyerid,b.name,
    avg(o.ordertotal)作为averageorderamount,max(o.orderdate)作为lastorderdate
    买家B
    在o.buyerid=b.buyerid上加入订单o
    其中buyerid=@buyerid
    B.Buyerid分组,B.姓名

    我的问题是,如何在我的地图中传达这一点?这有可能吗?

    我想我可以将这些计算值存储在买家的电报中,并根据需要重新计算,但这感觉不对。

    1 回复  |  直到 15 年前
        1
  •  3
  •   sirrocco    15 年前

    据我所知,你不能用NHibernate绘制地图。一个实体表示一个表(大多数情况下),报表的行中有更多的实体。

    要访问该类,我将在数据库中创建一个视图,然后创建一个单独的实体。在您对买家的正常使用中,您可能并不总是需要AverageOrderAmount和LastOrderDate—我认为您使用它在界面上显示这些信息,在这种情况下,您应该创建和映射一个DB视图。