2012-06-13 24 views
0

我正在開發一個MVC3應用程序在c#中,我使用NHibernate的ORM部分。我需要生成所有註冊客戶的列表和他們的最新訂單。在應用程序方面,這將需要通過所有客戶並檢索所有訂單以提取最新的訂單。 不需要的開銷,不是嗎?NHibernate實體映射:客戶與最新訂單

在數據庫上,我可以創建一個視圖並相應地爲該實體建模,但由於填充視圖是不可能的,因此無法創建新的客戶。那麼,您是如何解決這些問題的任何想法或最佳實踐?這裏是一個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) 

任何幫助非常感謝!

最好的問候, 馬丁

回答

2

您可以使用公式來獲得最後的訂單客戶,這樣的事情:

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

就像一個魅力。偉大的小費,謝謝。以前從未使用過公式,但似乎很有用。你有關於它的表現的想法嗎? –

+0

@Martin Horvath沒問題就問。我認爲性能比較慢(幾毫秒:)) –