質問

基本的なCustomer / Order / OrderItem / Productオブジェクトグラフがあります。顧客には多くの注文があり、注文には多くの注文アイテムがあり、製品には多くの注文アイテムがあります。これらは、FNHを使用して正常にマッピングされます。

ストアドプロシージャ<!> amp;の構成で問題が発生しました。流nに眠る。 Fluent-Hibernate FNH(バージョン1.0 RTM)にストアドプロシージャをマップするネイティブな方法はありません。解決策がありましたこちらはクラスマッピングへのパーツの追加についてですが、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マッピングが機能するかどうかわかりません。

事前に感謝します!

役に立ちましたか?

解決

わかりました、もう少し調査した後。ドメインクラスのマッピングと名前付きクエリhbm.xmlファイルが必要でした。

私のconfigureクラスには

があります
config.Mappings(x =>
{
    x.FluentMappings.AddFromAssemblyOf<CustomerMapping>().ExportTo(schemaPath);
    x.HbmMappings.AddFromAssemblyOf<CustomerOrderSummary>();
});

唯一の欠点は、ストアドプロシージャのxmlマッピングを手動で作成する必要があることです。現在はFNHを使用できません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top