0

我有客户、客户组、组表。Customer 与 CustomerGroups 有 1:n,Groups 与 CustomerGroups 有 1:n。在创建客户屏幕中,用户可以选择现有客户的组信息。因此,当我创建新客户时,我正在从现有客户中检索组并添加它们

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

此代码正在生成更新语句并使用新添加的 customerid 更新 customergroups 表,而不是使用新的 customerid 插入新记录。因此,所有具有 prev 的组。客户走了。谁能解释一下这种行为。

4

1 回答 1

0

根据您的描述,我猜 getcustomergroups 已经通过 NHibernate 从现有客户那里获得了客户组。如果是这样,NHibernate 已将 foreach 循环中的每个项目与现有客户相关联,因此当您将项目添加到新客户时,新客户将承担该项目的所有权。

您可以通过克隆项目来避免这种情况。请参阅如何使用 NHibernate 复制对象

于 2012-08-29T20:54:14.477 回答