刚刚掌握Entity Framework,我可以像这样保存,添加,删除等单个实体:
db.Entry(client).State = EntityState.Modified;
db.SaveChanges();
我的问题是,如果我想更改几条记录,我该怎么做呢,例如我想选择所有类型为'new'的作业,并将Type设置为'complete'。我可以使用Linq轻松地选择所有作业,但我是否必须循环,更改它们,将状态设置为已修改,保存更改,下一个等等?我确信有一种直截了当的方式,我只是不知道或设法找到它。
答案 0 :(得分:0)
您确定需要设置EntityState吗? SaveChanges将在保存之前检测更改。您在请求时无法一次更新多个记录,但您可以循环,更新值并在循环后调用保存更改。这将导致1个连接到数据库,同时保存所有更新的记录。
答案 1 :(得分:0)
是的,您必须遍历每个对象,但不必在每个对象之后保存更改。您可以在完成所有更改并保存更改后保存更改。除非有某些原因需要在编辑下一条记录之前保存。
但是,如果您有这样的简单操作,您也可以发出一个SQL语句来执行此操作。
context.Table.SqlQuery("UPDATE table set column = 1 where column2 = 3");
显然,这或多或少绕过了对象图,但是对于一个简单的批处理语句来说,这样做并没有错。