LINQ to Entities更新多行

时间:2010-07-12 21:44:16

标签: linq-to-entities

我是LINQ to Entities的新手,需要一些关于如何考虑多行更新的指导。我的问题实际上比概念更具概念性,因为我不确定我是否正确地考虑了解决方案。

这是单行更新。这似乎非常简单。

products prodtbl = (from p in db.products where p.product_id == 1 select p).First();
prodtbl.product_name = "Blueberry Jam";
db.SaveChanges(); 

当我希望更新多行时(例如删除where子句),会出现问题。然后prodtbl不能作为列表寻址。如果我想看到第10行的产品名称是唯一的方法,如下所示?

'List<type> prodlist = prodtbl.ToList<type>()';
string name = prodlist[9].product_name

现在,如果我更改prodlist [9] .product_name,如何更新prodtbl中的原始行?由于prodtbl不能作为数组寻址,我不能只设置它,我可以吗?我是否必须使用仅更新单个记录的where子句创建LINQ语句?如果答案为“是”,如果我更改了多行,是否有批量更新方法?

2 个答案:

答案 0 :(得分:1)

您无需创建单独的语句。

您可以使用,例如:

prodtbl.ElementAt(9).product_name = "Bob";

或迭代:

foreach (var p in prodtbl)
{
   p.product_name = "New name";
}

答案 1 :(得分:1)

您可以按照以下步骤执行此操作,

 var objTrn = context.Trn_Dependent.Where(i => i.DependentID == DependentId).ToList();
                        objTrn.ForEach(x => { x.IsDeleted = true; x.UpdatedBy = objUserInfo.EnrolleeID.ToString(); x.UpdatedOn = DateTime.Now; });                        
                        objTrn.ForEach(p => context.Entry(p).State =    EntityState.Modified);
context.SaveChanges();