如何在EF中进行批量更新

时间:2011-07-31 16:05:19

标签: c# wcf entity-framework

我在WCF服务上有以下方法:

    /// <summary>
    /// Receives the result of a request processing
    /// </summary>
    /// <param name="results">The resulting statuses for the processed account requests</param>
    /// <returns>Whether the response was successfully handled</returns>
    public bool SendRequestProcessingResult(IEnumerable<RequestProcessingResult> results)
    {
        foreach (var result in results)
        {
            // update entity
        }
    }

有没有办法一次更新所有实体?我应该只添加每个更新然后SaveChanges吗?在EF 4.1中进行这种“大规模”更新的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

  

我应该只添加每个更新,然后添加SaveChanges吗?

是的。

请注意,虽然EF是一个ORM,但对于这种性质的大批量更新,它并没有真正设计(性能方面,我的意思)。如果你需要从中获取更多性能,那么你几乎可以编写一批SQL语句并以老式的方式执行它们。

大多数人(我的意思是除Facebook,Twitter等之外)通常看不出你所建议的问题,而且你得到的级别越高,你的代码的意图就越失去所有的技术实施。

重要的是要强调,除非你已经测量并发现它缺乏,否则没有必要提高代码的性能。首先是正确性,可读性和维护性的代码,然后测量性能并在需要时进行有针对性的改进。