NHibernate fluente e procedimentos armazenados

Eu tenho um gráfico básico de objeto Customer / Order / OrderItem / Product. O cliente tem muitos pedidos, o pedido tem muitos itens de pedido, o produto tem muitos itens de pedido. Estes são mapeados com sucesso usando FNH.

Eu bati um obstáculo com a configuração de um procedimento armazenado e nhibernate fluente. Não há uma maneira nativa de mapear procedimentos armazenados em FNH fluente-hibernate (versão 1.0 RTM). Houve uma soluçãoAqui sobre como adicionar partes aos mapeamentos de classes, mas a chamada AddPart foi retirada do lançamento do FNH.

O procedimento armazenado é simples:

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

Há um CustomerOrderSummary.hbm.xml em

<?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>

Aqui está o def da classe 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);
        }
    }
}

No entanto, quando tentar iniciar uma sessão do NH, recebo erro na consulta nomeadaOrderSummary sem outros detalhes.

Eu provavelmente estou sentindo falta de algo realmente simples que mapeieCustomerOrderSummary classe para o procedimento, eu não sei. Esse objeto de domínio obviamente não mapeia diretamente para uma tabela na base de dados, então não tenho certeza se<class /> O mapeamento da HBM funcionaria?

Desde já, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion