我是 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 中获取此数据,我会使用如下聚合函数编写查询:
select b.BuyerID, b.Name,
avg(o.OrderTotal) as AverageOrderAmount, max(o.OrderDate) as LastOrderDate
from Buyers b
join Orders o on o.BuyerID = b.BuyerID
where BuyerID=@BuyerID
group by b.BuyerID, b.Name
我的问题是,如何在映射中传达这一点?这可能吗?
我以为我可以将这些计算值存储在买家电缆中,并根据需要重新计算它们,但这感觉不对。
最佳答案
据我所知,你无法使用 nhibernate 来映射它。一个实体代表一个表(大多数时候),您所拥有的更多的是类似于报告的内容。
为了访问该类,我将在数据库中创建一个 View ,然后创建一个单独的实体。在正常使用 Buyer 时,您可能并不总是需要 AverageOrderAmount 和 LastOrderDate - 我认为您正在使用它们在界面上显示此信息,在这种情况下,您应该创建并映射数据库 View 。
关于nhibernate - 如何在 NHibernate 中映射聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360388/