2012-03-15 47 views
0

說我有這個。在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被選定返回到服務器。

回答

0

我會做這樣的事

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

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

但是因爲你已經加載它們(在會話緩存)和鏈接表項被刪除,插入反正如果不刪除它只會重要。

相關問題