使用EF批量更新,最好的方法是什么?

时间:2013-06-12 02:29:51

标签: entity-framework

我需要批量更新,它几乎就是下面的sql语句

update RECORDS set SOMEValue = 1 where ID in (1, 5, 3,6,7,9)

我写了以下哪些有效

  //get all the records to update
    var COESRecord = context.COESDetails.Where(x => model.COESs.Contains(x.COESNo));           

    foreach (var COES in COESRecord)
    {
         COES.InspectorId = model.InspectorId;
         context.Entry(COES).State = EntityState.Modified;                
    }
    context.SaveChanges();

但问题是当我更新1000条记录时,它需要很长时间。这是最好的方法吗?或者有其他方式进行批量更新吗?

2 个答案:

答案 0 :(得分:1)

如果您想远离SQL,可以尝试使用EntityFramework.Extended

支持编写LINQ,如批量删除/更新查询。我只尝试了一次,效果很好,但不确定我是否会在生产中使用它。

答案 1 :(得分:0)

我可以通过两种方式直接想到实现您所寻求的目标。

1)创建一个存储过程并从实体模型中调用它。

2)将原始命令文本发送到数据库,请参阅此microsoft article