【发布时间】:2009-12-03 12:50:01
【问题描述】:
我有一个用户表和一个网络表,它们之间存在多对多关系(一个用户可能对多个网络很长,一个网络可能包含许多用户)。多对多关系保存在“UserNetworks”表中,该表只有两列,UserId 和 NetworkId。
我的课程如下所示:
public class User
{
public IList<Network> Networks {get; set;}
}
public class Network
{
public IList<Usre> Users {get; set;}
}
这些多对多集合的 NHibernate 映射如下所示:
用户.hbm.xml:
<bag name="Networks" table="UserNetworks" cascade="save-update" inverse="true">
<key column="UserId" />
<many-to-many class="Network" column="NetworkId" />
</bag>
Network.hbm.xml:
<bag name="Users" table="UserNetworks" cascade="save-update">
<key column="NetworkId" />
<many-to-many class="User" column="UserId" />
</bag>
在我的代码中,我创建了用户和网络之间的关联,如下所示:
user.Networks.Add(network);
network.Users.Add(user);
我希望 SQL 运行只对 UserNetworks 表执行一次 INSERT。相反,它在 NetworkID = X 的 UserNetworks 表上执行 DELETE,然后继续将所有 UserNetworks 行连同新关联一起重新插入。
我做错了什么?
【问题讨论】:
标签: nhibernate