在nhibernate中更新表关系引用的最佳方法?
说我有这个 一个国家有许多产品,一个产品可以有许多国家(多对多) 现在产品A在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
US
Canada
现在由于某种原因,他们停止在加拿大销售产品A。如何更新产品A以删除关系,因为现在产品A已不在加拿大
我应该清除名为likeProudctA.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);
}
但是,由于您已经加载了它们(在会话缓存中),并且链接表条目已被删除并插入,因此只有在不删除任何内容的情况下才有意义