0

多くのOrderItemを含むOrderマッピングがあります。Orderのみを保存すると、マッピングによってOrderとOrderItemの両方がデータベースに正しく保存されますが、その注文を再読み込みすると、注文に含まれるOrderItemのリストにnull値が入力されます(テーブル)Orderの外部キーを持つOrderItemに到達するまで。したがって、null注文アイテムの総数は、OrderItemsテーブルの行数になります(注文に関連する実際の注文アイテムは含まれません)。これが私のマッピングです:

注文:

<list name="OrderItems" table="OrderItems" cascade="all" inverse="true" >
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" not-found="ignore" />
</list>

OrderItem:

<many-to-one name="Order" class="Order" column="OrderID" not-null="true" />

Orderのクラス実装は次のとおりです。

public class Order : {
    private IList<OrderItem> orderItems = new List<OrderItem>();

nHibernateは関係の多くの部分としてリストをサポートしていないことを読みましたが、ロードではなく、保存は正しく機能します。これを機能させるには、すべてをセットに変換する必要がありますか?

4

2 に答える 2

1

頭のてっぺんだけで、問題を抱えていたことを覚えています

<list> 

そして頼った

<bag> 

代わりに、.NET IList インターフェイスにマップします。それがあなたの問題を解決するかどうかはわかりません。

console.out へのロギングを有効にして、データベースにヒットしている実際の SQL が予想とどのように異なるかを調べることが役立つ場合があります (このブログを参照) 。

于 2009-04-22T16:33:12.763 に答える
0

これは、OrderItemsコレクションが遅延ロードされていることが原因ではありませんか?リスト(またはバッグ)マッピングでlazy = falseを指定した場合、これはもはや当てはまらないはずです。

質問のオフコースは、OrderItemsを遅延ロードするかどうかです。:)

于 2009-04-22T16:45:36.633 に答える