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

时间:2009-09-01 03:31:00

标签: nhibernate nhibernate-mapping

我是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
  group by b.BuyerID,b.Name

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

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

1 个答案:

答案 0 :(得分:3)

据我所知,你不能用nhibernate映射它。一个实体代表一个表(大多数时候),你在那里有更多的报告。

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