我使用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的最佳做法是什么?
答案 0 :(得分:1)
一旦我一直在寻找这个问题的“干净整洁”解决方案,但我认为社会似乎已经以“糟糕的方式”解决了。