更新Linq到Sql的多对多关系

时间:2010-10-20 09:35:06

标签: c# linq-to-sql

我使用Linq到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 个答案:

答案 0 :(得分:1)

一旦我一直在寻找这个问题的“干净整洁”解决方案,但我认为社会似乎已经以“糟糕的方式”解决了。