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

标签 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 中获取此数据,我会使用如下聚合函数编写查询:

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/

相关文章:

nhibernate - 使用 NHibernate 处理多个表的 JoinQueryOver

nhibernate - Fluent NHibernate - 如何映射两个连接表中存在的不可为空的外键

.net - 使用 LINQ 进行多次删除(更具体地说是 Linq2Nhibernate,但是......)

单个实体引用的 WCF 序列化和 NHibernate 代理

c# - Fluent NHibernate 映射 IList<Point> 作为单列的值

NHibernate 3 分页和确定总行数

nhibernate - 其中一个字段是 count(*) NHibernate

c# - 级联还是不级联? ("object references an unsaved transient instance"错误)

asp.net-mvc - IWindsorContainer 与 IUnityContainer 有什么区别?

c# - 如何创建忽略没有 setter 的属性的 Fluent NHibernate 约定