如何在EF中进行批量更新

bev*_*qua 3 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Nei*_*ell 5

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

是的.

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

大多数人(我的意思是除了Facebook,Twitter等)通常不会看到你所建议的问题,而且你得到的级别越低,你的代码的意图就会在所有技术实现中丢失得越多.

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