У меня есть базовый графа Customer/Order/OrderItem/Product object. У Клиента много ордеров, у Ордена есть много предметов заказа, у Продукта много предметов заказа. Они успешно отображаются с использованием FNH.Fluent 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
Там в CustomerOrderSummary.hbm.xml в
<?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 Защита:
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 будет работать?
Заранее благодарен!
пожалуйста форматировать код –
Я форматировал код, выглядел нормально в предварительном просмотре, fubared в сообщении. Наиболее раздражает. –