2

流暢な nhibernate 内で継承を実装しようとしていますが、最も単純なマッピングでさえ例外をスローしています: Count=1 のこの SqlParameterCollection の無効なインデックス 1。

私が渡すマッピングはできる限り基本的なもので、ID、ソース、および量のみをマッピングしますが、コレクションに渡される唯一のパラメーターは量であり、ソース (ディスクリミネーター) ではなく、例外がスローされています。私はもともと、ディスクリミネーターを列挙型にしたかったのですが、何も機能しないため、簡単にするために文字列にしました。

サブクラスは現在、オブジェクトに他の機能を追加していませんが、他の機能を追加します。これは最も基本的なバージョンなので、最も簡単だと思いました...

このエラーを読んでみると、通常、問題は基本クラスとサブクラスの両方にプロパティがマッピングされていることが原因ですが、私が見る限り、そうではありません。私は少し途方に暮れているので、誰かが私が間違ったことを指摘できますか.

クラス:

public class BasePayment
{
    public virtual int Id { get; set; }
    public virtual string Source { get; set; }
    public virtual decimal Amount { get; set; }
}

public class SubPayment : BasePayment
{
}

マッピング:

public class BasePaymentMap : ClassMap<BasePayment>
{
    public BasePaymentMap()
    {
        DiscriminateSubClassesOnColumn("Source");
        Table("BasePayments")
        Id(m => m.Id);
        Map(m => m.Source);
        Map(m => m.Amount);
    }
}

public class SubPaymentMap : SubclassMap<SubPayment>
{
    public SubPaymentMap()
    {
        DiscriminatorValue("SourceX");
    }
}

ご協力いただきありがとうございます。

4

1 に答える 1

5

Gaaaaah、投稿後すぐに答えを見つけました。ディスクリミネータ列はマッピング自体を必要とせず、ディスクリミネータを指定することでマッピングされます。木を見て木を見ることができず、今ではかなり気が狂っています...

于 2012-05-28T11:51:52.870 に答える