时间:2011-01-06 17:34:29

标签: c# linq entity-framework entity-framework-4 linq-to-entities

4 个答案:

答案 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来执行此操作,该命令接受一个字符串命令和一个参数数组。

仅想添加此答案以指出在某些情况下,检索行,更新行并将其保存回数据库是不够的,并且有必要时可以运行直接更新语句的方法