У меня есть таблица Users и таблица Networks с отношением «многие ко многим» между ними (пользователь может быть длинным для нескольких сетей, а сеть может содержать много пользователей). Отношение «многие ко многим» содержится в таблице «UserNetworks», в которой просто есть два столбца: UserId и NetworkId.
Мои занятия выглядят так:
public class User
{
public IList<Network> Networks {get; set;}
}
public class Network
{
public IList<Usre> Users {get; set;}
}
Отображения NHibernate для этих коллекций многие-ко-многим выглядят следующим образом:
User.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. Вместо этого он выполняет DELETE для таблицы UserNetworks с NetworkID = X, а затем переустанавливает все строки UserNetworks обратно вместе с новой ассоциацией.
Что я делаю не так?