2010-10-20 102 views
3

我使用Linq to Sql並且無法更新多對多的關係。更新一個多對多的關係Linq to Sql

我的場景: 產品由一個或多個項目指定。當我創建了一個產品,我只是選擇所需的項目,這些項目通過補充說:

product.ProductItemRel.Add(itemRel); 

但什麼是當我需要更新的最佳做法是什麼?

我可以使我自己的更新功能找到要刪除的項目和要插入的項目,但它很容易需要20行代碼。

等等快速和髒:

var oldProduct = orderRepository.GetProductCRUD.FetchSingle(x => x.ProductID == product.ProductID); 

//Add items 
foreach (var i in items) 
{  
    if(i not exist in oldProduct) 
    {      
     var itemRel = new ProductItemRel() 
     { 
      ItemID = i, 
      Product = product 
     }; 
     product.ProductItemRel.Add(itemRel); 
    } 
} 

//Delete items       
foreach(var p in oldProduct) 
{ 
    if(p not exist in items) 
    { 
     product.ProductItemRel.Remove(relation to delete); 
    } 
} 

另一種非常不錯的方法,是隻刪除所有關係的添加新的。

當我需要更新多對多關係時,Linq to Sql的最佳實踐是什麼?

回答

1

曾經我一直在尋找這個問題的「乾淨利落」的解決方案,但我認爲社會似乎已經解決了「壞道路」。