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

时间:2012-03-15 15:54:39

标签: nhibernate

说我有这个。

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

现在产品A有

US
Canada

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

我是否应该清除名为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被选择发回服务器。

1 个答案:

答案 0 :(得分:0)

我会做这样的事情

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

foreach(var country in countriesToRemove)
{
    productA.Countries.Remove(country);
}

但是,由于您已经加载了它们(在会话缓存中)并且链接表条目被移除并插入,所以只有在没有删除任何内容时才会有效。