0

Orders、Items、および OrderItems エンティティがあり、Orders と Items テーブルの間に n:n の関係があります。マッピングに Fluent Hibernate を使用しています。「Order」エンティティには、「保護セット」を持つ「List」プロパティがあります。挿入中に以下の問題に直面しています。

new Order.Items.Add(alreadyexistingitem);

orderitems テーブルの既存のアイテムであるため、新しい orderid と既存のアイテム ID を使用してレコードを orderitems テーブルに挿入する必要があります。ただし、連想テーブルではなく、注文テーブルに挿入されるのは新しい注文の詳細のみです。

注文エンティティの「アイテム」バッグに「反転」属性が設定されています。そのため、以下のようにアイテムを追加しながら、新しく追加された注文を添付する必要がありますが、保護セット付きのリストオブジェクトであるため、どうすればよいですか。

Orders.Items.Add(alreadyexistingitem, *order = "neworder"*);

以下はマッピングです。

   model.Override<Order>(m =>
   {      

                    m.HasManyToMany(c => c.Items)
                        .Table(Constants.TABLE_PREFIX + "OrderItem")
                        .Inverse()
                        .Cascade.AllDeleteOrphan();
    });



  model.Override<Item>(m => m.HasManyToMany(c => c.Orders)
                                            .Table(Constants.TABLE_PREFIX + "OrderItem")
                                            .Cascade.None());
4

1 に答える 1

2

予備的な答えとして、NHibernateは、同じオブジェクト参照が2か所で使用されていることを知るのに十分賢いです。必要なのは、OrderとItemの間のマッピングにおける「HasManyToMany」関係だけです。

インバースはおそらく注文側では使用しないでください。InverseはNHibernateに、関係の反対側には関係を定義および解除する力があることを伝えます。注文にはアイテムがあります。アイテムは、それらが属する順序を「選択」することはできません。

于 2012-08-31T19:16:52.153 に答える