2010-11-29 4 views
0

私は複合キーと一対多の関係に関して奇妙な問題に遭遇しました。NHibernate 1対多の再取得オブジェクトの問題

私は、次のInvoiceクラスを持っている:

public abstract class AccountingBase<TItemType> : AccountingBase where TItemType : AccountingItemBase 
{ 
    public virtual ObservableCollection<TItemType> Items { get; set; } 

    public abstract void AddItem(TItemType item); 
} 

と下のクラスは、次のとおりです:次のように

public class Invoice: AccountingBase<InvoiceItem> 
{ 
    public virtual IList<InvoiceItem> InvoiceItems {.....} 
} 

それが継承するクラスは、(AccountingBase)ではあり

public abstract class AccountingBase 
{ 
    public virtual Subsidiary Subsidiary {....} 
    public virtual int ID{ ....} 
} 

請求書クラスのマッピングは次のとおりです。

これで、Invoicesのリストを取得すると、各Itemsオブジェクトの遅延読み込みなど、正常に動作します。私が得る問題は、編集する請求書を選択するときです。私は新しいセッションを開き、私は新しいセッションを使用して同じ請求書を取得しようとするが、請求書を読み込むときに項目を読み込まない、空白として取得します。理由は何でしょうか?

私は古いオブジェクトを使用して、新しいセッションで新しい請求書オブジェクトを取得するために取得するために実行していたコードは次のとおりです。

Invoice = Session.Get<Invoice>(invoice); 

私はデバッグする場合、請求書は、タイプ請求書であり、そしてまた、請求書が1を持っていますInvoiceItemsコレクションのInvoiceItemが、Invoiceの新しいインスタンスにはすべてのフィールドが設定されていますが、InvoiceItemsはnullです。このようなエラーが発生する可能性のあるNhibernateについて知っておくべきことがありますか?

私はlazy="false"を試しました。

答えて

0

修正プログラムが見つかりました。私はInvoiceクラスとSubsidiaryクラスの両方でEqualityメソッドを正しく実装する必要がありました。

関連する問題