我有一個基本的Customer/Order/OrderItem/Product對象圖。客戶有許多訂單,訂單有很多訂單項目,產品有許多訂單項目。這些使用FNH成功映射。流利的NHibernate和存儲過程
我碰到了一個配置存儲過程的障礙& fluent-nhibernate。在流利休眠FNH(版本1.0 RTM)中映射存儲過程的方式不是本地方式。有一個解決方案here有關將部件添加到類映射的問題,但AddPart調用已從FNH的發佈中刪除。
存儲過程很簡單:
CREATE PROCEDURE [dbo].[OrderCountByCustomer]
AS
BEGIN
SET NOCOUNT ON;
SELECT
c.name as [Customer.Name],
CAST(count(o.id) as NVARCHAR) as [Customer.OrderCount]
FROM customer c
LEFT OUTER JOIN [order] o
ON o.customer_id = c.id
GROUP BY c.name
END
有一個在
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NVAble.Orders.Core" namespace="NVAble.Orders.Core">
<sql-query name="OrderSummary">
<return class="CustomerOrderSummary">
<return-property column="Customer.Name" name="CustomerName" />
<return-property column="Customer.OrderCount" name="OrderCount" />
</return>
EXEC [OrderCountByCustomer]
</sql-query>
</hibernate-mapping>
這裏,CustomerOrderSummary.hbm.xml是CustomerOrderSummary類DEF:
namespace NVAble.Orders.Core
{
public class CustomerOrderSummary
{
virtual public string CustomerName { get; set; }
virtual public string OrderCount { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", CustomerName, OrderCount);
}
}
}
然而,當嘗試要啓動NH會話,我在命名查詢OrderSummary
中收到錯誤,但沒有其他詳細信息。
我可能會錯過一些非常簡單的東西,將CustomerOrderSummary
類映射到過程,我不知道。該域對象顯然不直接映射到數據庫中的表,因此我不確定是否有正常的<class />
HBM映射可以工作?
在此先感謝!
請格式化代碼 – 2009-10-28 15:13:29
我確實格式化了代碼,在預覽中看起來不錯,在文章中放大了。最煩人的。 – 2009-11-03 16:22:38