使用NHibernate更新问题

时间:2012-08-29 17:00:08

标签: asp.net-mvc nhibernate fluent-nhibernate nhibernate-mapping

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

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

此代码生成更新语句并使用新添加的customerid更新customergroups表,而不是使用新的customerid插入新记录。因此,所有群体都有上一个。顾客走了任何人都可以解释一下这种行为。

1 个答案:

答案 0 :(得分:0)

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

您可以通过克隆项目来避免这种情况。见How do I copy an object with NHibernate