我是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.Name分组
我的问题是,如何在映射中传达这一点?这可能吗?
我以为我可以将这些计算出的值存储在“买方”电缆中,然后根据需要重新计算它们,但这感觉不对。
最佳答案
据我所知,您无法使用nhibernate映射它。实体(大多数情况下)代表一个表,而您所拥有的则更多。
要访问该类,我将在数据库中创建一个视图,然后创建一个单独的实体。在通常使用Buyer的情况下,您可能不一定总是需要AverageOrderAmount和LastOrderDate-我认为您正在使用它们在界面上显示此信息,在这种情况下,您应该创建并映射数据库视图。
关于nhibernate - 您如何在NHibernate中映射聚合函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1360388/