0

Customer、CustomerGroups、Groupsテーブルがあります。顧客はCustomerGroupsで1:nを持ち、GroupsはCustomerGroupsで1:nを持っています。顧客の作成画面で、ユーザーは既存の顧客のグループ情報を選択できます。したがって、新しい顧客を作成するときは、既存の顧客からグループを取得して追加します

///
Customer cust = new Customer();
foreach(var item in getothercustomergroups())
cust.groups.add(item);
commit

このコードは、新しいcustomeridで新しいレコードを挿入する代わりに、updateステートメントを生成し、新しく追加されたcustomeridでcustomergroupsテーブルを更新しています。このため、前のすべてのグループ。顧客がいなくなった。誰かがこの振る舞いを説明してもらえますか?

4

1 に答える 1

0

あなたの説明から、getcustomergroupsはNHibernateを介して既存の顧客からcustomergroupsを取得したと思います。その場合、NHibernateはforeachループ内の各アイテムを既存の顧客に関連付けているため、新しい顧客にアイテムを追加すると、新しい顧客がそのアイテムの所有権を引き継ぎます。

アイテムのクローンを作成することで、これを回避できます。NHibernateでオブジェクトをコピーする方法を参照してください

于 2012-08-29T20:54:14.477 に答える