在nhibernate中更新表关系引用的最佳方法?

在nhibernate中更新表关系引用的最佳方法?,nhibernate,Nhibernate,说我有这个 一个国家有许多产品,一个产品可以有许多国家(多对多) 现在产品A US Canada 现在由于某种原因,他们停止在加拿大销售产品A。如何更新产品A以删除关系,因为现在产品A已不在加拿大 我应该清除名为likeProudctA.Countries.clear()的列表吗。然后再将仍选定的国家/地区添加回 ProductA.Countries.Add(loadCountry(id)) // this would be a loop and I would be loading the

说我有这个

一个国家有许多产品,一个产品可以有许多国家(多对多)

现在产品A

US
Canada
现在由于某种原因,他们停止在加拿大销售产品A。如何更新产品A以删除关系,因为现在产品A已不在加拿大

我应该清除名为like
ProudctA.Countries.clear()的列表吗。然后再将仍选定的国家/地区添加回

ProductA.Countries.Add(loadCountry(id)) // this would be a loop and I would be loading the ids from the select countries.
或者我应该怎样弄清楚发生了什么变化,比如删除或其他什么

我正在从服务器获取Guid列表。用户只看到一个选择列表框并选择国家


当他们编辑产品时,选择了美国和加拿大,但随后他们选择取消选择加拿大,因此只有美国Guid被发送回选定的服务器。

我会这样做

countriesToRemove = productA.Countries.Where(c => !selectedIds.Contains(c.Id)).ToList();

foreach(var country in countriesToRemove)
{
    productA.Countries.Remove(country);
}
但是,由于您已经加载了它们(在会话缓存中),并且链接表条目已被删除并插入,因此只有在不删除任何内容的情况下才有意义