0

我需要批量更新,差不多就是下面的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 条记录时,它只需要很长时间。这是最好的方法吗?还是有其他方法可以进行批量更新?

4

2 回答 2

1

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

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

于 2013-06-12T14:05:12.303 回答
0

我可以立即想到两种方法来实现您的目标。

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

2)将原始命令文本发送到数据库,请参阅这篇微软文章

于 2013-06-12T02:47:20.417 回答