NHibernate实体映射:具有最新订单的客户

时间:2012-06-13 08:34:55

标签: nhibernate fluent-nhibernate

我正在用c#开发一个MVC3应用程序,我正在使用NHibernate作为ORM部分。我需要生成所有注册客户及其最新订单的清单。在应用程序方面,这需要通过所有客户并检索他们的所有订单以提取最新的订单。 不需要的开销,不是吗?

在数据库上,我可以相应地创建一个视图并对实体建模,但由于无法填充视图,我无法创建新客户。那么,您如何解决这些问题的任何想法或最佳实践?这是一个提供所需信息的SQL查询:

SELECT c.id, c.name, c.description, m.ordernumber AS latest_order, m.unixtime, m.id AS latest_order_id
FROM dbo.customer c
LEFT JOIN dbo.mailorder m ON c.id = m.customer_id
WHERE m.unixtime = (SELECT MAX(unixtime) FROM dbo.mailorder)

非常感谢任何帮助!

祝你好运, 马丁

1 个答案:

答案 0 :(得分:2)

您可以使用公式获取客户的最后订单,如下所示:

<property name="LatestOrder" formula="(SELECT MAX(dbo.mailorder.unixtime) FROM dbo.mailorder where dbo.mailorder.customer_id = ID)" />