答案 0 :(得分:80)
答案 1 :(得分:7)
// for update
(from x in dataBase.Customers
where x.Name == "Test"
select x).ToList().ForEach(xx => xx.Name="New Name");
// for delete
dataBase.Customers.RemoveAll(x=>x.Name=="Name");
答案 2 :(得分:3)
答案 3 :(得分:0)
在大多数情况下,@ tster的答案就足够了。但是,在我遇到的情况下,我想不先检索就更新行。
我的情况是这样的:我有一个表要在其中“锁定”一行,这样一次只有一个用户可以在我的应用程序中对其进行编辑。我通过说
实现了这一目标 update items set status = 'in use', lastuser = @lastuser, lastupdate = @updatetime where ID = @rowtolock and @status = 'free'
原因是,如果我只是简单地通过ID检索行,更改属性然后保存,那么最终我可能会导致两个人同时访问同一行。这样,我只是简单地发送和更新声明该行为我的行,然后尝试检索具有刚更新过的相同属性的行。如果该行存在,那就太好了。如果由于某种原因而没有(别人的“锁定”命令首先到达那里),我只是从我的方法中返回FALSE。
我通过使用context.Database.ExecuteSqlCommand来执行此操作,该命令接受一个字符串命令和一个参数数组。
仅想添加此答案以指出在某些情况下,检索行,更新行并将其保存回数据库是不够的,并且有必要时可以运行直接更新语句的方法